Here is a more advanced function to convert an error code to text:
<?php
function preg_errtxt($errcode)
{
static $errtext;
if (!isset($errtxt))
{
$errtext = array();
$constants = get_defined_constants(true);
foreach ($constants['pcre'] as $c => $n) if (preg_match('/_ERROR$/', $c)) $errtext[$n] = $c;
}
return array_key_exists($errcode, $errtext)? $errtext[$errcode] : NULL;
}
?>
preg_last_error
(PHP 5 >= 5.2.0)
preg_last_error — Devuelve el código de error de la última ejecución de expresión regular PCRE
Descripción
int preg_last_error
( void
)
Devuelve el código de error de la última ejecución de expresión regular PCRE.
Ejemplo #1 Ejemplo de preg_last_error()
<?php
preg_match('/(?:\D+|<\d+>)*[!?]/', 'foobar foobar foobar');
if (preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) {
print '¡El límite de marcha atrás se agotó!';
}
?>
El resultado del ejemplo sería:
Backtrack limit was exhausted!
Valores devueltos
Devuelve una de las siguientes constantes (explicadas en su propia página):
PREG_NO_ERRORPREG_INTERNAL_ERRORPREG_BACKTRACK_LIMIT_ERROR(vea también pcre.backtrack_limit)PREG_RECURSION_LIMIT_ERROR(vea también pcre.recursion_limit)PREG_BAD_UTF8_ERRORPREG_BAD_UTF8_OFFSET_ERROR(desde PHP 5.3.0)
andre at koethur dot de ¶
23 hours ago
johan at bluemoonit dot net ¶
3 years ago
The above function pcre_error_deocde [sic] is not correct - not all of the used constants are errors constants. For example, when the error is actually PREG_BAD_UTF8_ERROR, the function outputs the text for PREG_SPLIT_OFFSET_CAPTURE.
Omer ¶
2 years ago
here's the code to check for all errors
<?php
if (preg_last_error() == PREG_NO_ERROR) {
print 'There is no error.';
}
else if (preg_last_error() == PREG_INTERNAL_ERROR) {
print 'There is an internal error!';
}
else if (preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) {
print 'Backtrack limit was exhausted!';
}
else if (preg_last_error() == PREG_RECURSION_LIMIT_ERROR) {
print 'Recursion limit was exhausted!';
}
else if (preg_last_error() == PREG_BAD_UTF8_ERROR) {
print 'Bad UTF8 error!';
}
else if (preg_last_error() == PREG_BAD_UTF8_ERROR) {
print 'Bad UTF8 offset error!';
}
?>
