16 de abril de 2012

Problema: Mensaje "Function eregi() is deprecated" en AidaNews2

Problema

Estaba trabajando con Joomla! 1.5.24 sobre un servidor con PHP 5.3.8. La web tenía instalada la extensión AidaNews2 utilizada para mostrar las novedades del sitio en el inicio, creando una miniatura de la imagen principal del artículo con un texto de introducción.


Después de un tiempo de uso, se detecta que cuando el módulo AidaNews2 crea una nueva miniatura, aparece el siguiente error en la parte superior del módulo:
Function eregi() is deprecated in .../misitio.com/modules/mod_aidanews2/helper.php on line 1293
La cuestión es que el error solo aparecía una vez, la imagen se creaba y si se le daba a renovar la página, desaparecía. Sin embargo, es comprensible que es bastante molesto, a la vez que antiestético tener continuamente este mensaje apareciendo cada vez que se crea una nueva miniatura.

Solución

Tal y como ocurría con la función split, la función eregi también ha quedado obsoleta en la nueva versión de PHP. Para solucionar el problema vamos al archivo del error, según la ruta:
.../modules/mod_aidanews2/helper.php
Y sustituímos en la línea 1293 la expresión

eregi

por:

preg_match

que ahora es la función con la que se puede sustituir la obsoleta eregi. Sin embargo, con este cambio nada más, nos seguirá apareciendo un mensaje, esta vez de advertencia: 
Warning: preg_match() [function.preg-match]: No ending matching delimiter ']' found in .../misitio.com/modules/mod_aidanews2/helper.php on line 1293
Según parece, el mensaje viene provocado porque la nueva función necesita una delimitación. Si a continuación de preg_match, sustituimos la expresión que aparece entre comillas

"[\|\\]"

por esta otra: 

"/^[0-9]+\.[0-9]{2}$/"

Los errores desaparecen definitivamente y todo vuelve a funcionar (al menos por ahora) con normalidad.

No hay comentarios:

Publicar un comentario