• Passage à PHP 5.3 et disparition des ereg

    Deprecated: Function eregi_replace() is deprecated

    Si votre serveur passe de PHP 5.2 à PHP 5.3, vous aurez peut-être la surprise de voir cet avertissement s’afficher partout ; c’est pas beau ! En fait les fonctions de la famille ereg_* (#ereg, eregi, ereg_replace et eregi_replace) continuent à fonctionner à l’identique, mais provoquent cette annonce, car les “Dieux de #PHP” (si une telle chose existe) ont décidé d’en finir avec elles. Pour s’en sortir :

    1. Modifier les appels de fonction
    – ereg(’x’…) devient preg_match(’/x/’…)
    – eregi(’x’…) devient preg_match(’/x/i’…)
    – ereg_replace(’x’…) devient preg_replace(’/x/’…)
    – eregi_replace(’x’…) devient preg_replace(’/x/i’…)

    ça peut être long à faire surtout si c’est des centaines de vieux fichiers dont on ne sait plus à quoi ça sert…

    2. Masquer les avertissements
    depuis quelques versions, par défaut #SPIP fait ceci :
    – error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED)
    il est bien évidemment possible de faire pareil dans d’autres scripts
    ou alors, sur chaque ligne concernée, ajouter un @
    – @ereg(…)

    3. Quand ereg() aura disparu
    On peut espérer, quand ereg() aura disparu (pour PHP 7 ?) qu’il sera possible de définir soi-même les fonctions ereg() avec un
    if(!function_exists(’ereg’)) { function ereg() { ………} }
    je n’ai pas trouvé de telle "librairie", mais ce ne sera pas forcément trop difficile à produire et à installer dans le script d’auto_prepend (là où je mets l’#écran_de_sécurité).

    #regexp