No soy bueno con la expresión regular, por lo que ni siquiera saben lo que hace éste, exactamente:preg_match falla en php> 5,3
echo preg_match('/^(([a-zA-Z0-9\x2d]{1,63}\x2e)*[a-zA-Z0-9\x2d]{1,63}){1,254}$/', 'example12345678.com>');
la aparté de una versión anterior de Zend Framework - 1.5, que está desactualizado y en la última versión estable del framework esta expresión regular ya no se presenta. Sin embargo, su comportamiento es curioso, porque no encontré ninguna explicación documentada o una nota de incompatibilidad hacia atrás en los recursos oficiales de php.
El caso es que en PHP 5.2 * que funciona bien:. Devuelve 0. En caso de PHP 5.3.10, 5.4.0 devuelve FALSE, lo que significa "un error (lo más probable 5.3, 5.4 supongo.). ".
Mi pregunta es: ¿por qué? y cual es el error? ¿Es la expresión regular, algún tipo de recurrencia o ambigüedad de reglas? ¿Por qué funciona en php 5.2 si es así?
Curiosamente, si cambio 'example12345678.com>' a 'example1234567.com>' (lo que es uno más corto o más carbón) - que empiece a funcionar y devuelve 0. Si lo cambio a '123123123123123123123123123 'funciona también y devuelve 1.
UPD: no se sabe aún si esto es importante, pero aquí están las versiones pcre 8,02 (PHP 5.2) vs 8,12 (php 5,3)
UPD2: Entiendo para qué sirve ... más o menos ... y no hay ningún problema para que nada funcione en este momento. Como dije, una actualización de Zend_Validate_ * lo resuelve. Trataré de describir mi preocupación en otras palabras:
decir, actualizo una pieza importante de software, haciendo que php5.2> php5.3 cambie. Intento encontrar información sobre todos los problemas que podría enfrentar (principalmente al leer esto: http://php.net/manual/en/migration53.php). El software es un poco antiguo, pero no es antiguo, p. Zend Framework podría ser de la versión 1.5. Compruebo/parcheo/analizo y corrijo cada ruptura de bc y la característica obsoleta. Incluso las pruebas de mi unidad funcionan bien.
Para mi sorpresa, lo que se describe en la pregunta sucede. (Para ser precisos, Zend_Validate_Hostname arroja una excepción). Así que ahora quiero saber por qué me perdí esta al actualizar y, lo que es más importante, si debería volver a verificar todas las 'preg_match' (y otras funciones de PCRE que utilizan) en la aplicación probando varios datos de entrada imaginables para intentar encontrar "correcciones de errores" similares ".
Si se trata de una "corrección de errores". Porque parece una nueva falla: solía funcionar como se esperaba en php5.2 y ya no funciona.
Esperaba obtener algunas pistas para reducir la búsqueda.
¿Cómo lo estás usando, si usted no sabe lo que hace ¿Exactamente? – ilanco
¿Y de qué archivo lo tomó? –
@ilanco, lo estoy usando como parte del marco. esto es sintopico sin embargo. – lcf