20 de mayo de 2012

Problema: Function eregi_replace() is deprecated con Ninja RSS Syndicator

Problema

Trabajando con Jommla! 1.5.24 en un servidor con PHP 5.3, nos percatamos de que nuestro feed en FeedBurner llevaba algunos días sin actualizarse. Al indagar un poco más, descubrimos que el origen del problema es que estaba fallando el RSS original del sitio, gestionado con la extensión Ninja RSS Syndicator. De esta manera, al intentar acceder a la dirección del feed original, de la forma: http://www.misitio.com/ index.php?option=com_ninjarsssyndicator&feed_id=1, obteníamos el siguiente error que había hecho que el RSS dejara de funcionar:
Function eregi_replace() is deprecated en tusitio.com/web/components/com_ninjarsssyndicator/views/ninjarsssyndicator/tmpl/default.php
Solución

Tal y como ya nos había pasado en otras ocasiones, ya que lo mismo ocurría con la función split y con la eregi, la función eregi_replace también ha quedado obsoleta en la nueva versión de PHP. Como en el resto de ocasiones, tendremos que sustituir la función antigua por otra expresión que pueda funcionar en la actual configuración de PHP.

En primer lugar, abrimos el archivo default.php siguiendo la ruta del error. Buscamos la expresión

eregi_replace

y la sustituímo por:

preg_replace

Sin embargo, si nos quedamos sólo con este cambio, el error original desaparecerá, pero nos dará otro:
Warning: preg_match() [function.preg-match]: No ending matching delimiter ']' found in tusitio.com/web/components/com_ninjarsssyndicator/views/ninjarsssyndicator/tmpl/default.php
Para que este fallo también desaparezca y por fin vuelva a funcionar nuestro RSS, el paréntesis que sigue a preg_replace también debe ser modificado para que quede de la siguiente forma:
preg_replace ("/xx/", "/xxx/", $string)

Así, por fin tenemos de nuevo funcionando nuestro feed con normalidad.

No hay comentarios:

Publicar un comentario