Eregi_replace()

Résolu
Bonjour,

J'ai un petit soucis avec ma méthode eregi_replace() :
$this->page = eregi_replace("{" . $tag . "}", $data, $this->page);


En local elle marche super (pour un système de template tout simple).

Par contre chez OVH, j'ai cette erreur autant de fois que je l'utilise (la méthode) :
Warning: eregi_replace() [function.eregi-replace]: Invalid preceding regular expression in /homez.109/aircontr/www/lib/template.php on line 33


J'ai tout mes hébergeurs chez OVH donc j'ai un peu de mal à tester sur d'autres environnement de production, excepté sur un serveur d'université et là ça remarche comme en local.

Si vous avez une idée je vous remercie d'avance :)
Configuration: Linux
Firefox 3.0.9

7 réponses

  1. Toujours le problème :P
    1
    1. Modérateur
      Salut,

      Essai
       $tag="{" . $tag . "}";
      $this->page = eregi_replace($tag, $data, $this->page);
      --
      106485010510997108
      0
      1. Même erreur mais une ligne plus loin :P

        Warning: eregi_replace() [function.eregi-replace]: Invalid preceding regular expression in /homez.109/aircontr/www/lib/template.php on line 34
        0
        1. Modérateur
          Re,

          Peut être qu'il sera bien de voir le contenu de $tag et $data
          0
          1. Voici le retour, j'affiche désormais $tag et $data avant de faire le eregi_replace() :

            tag : {SITE_TITLE}
            data : Dupont Air Control SA
            Warning: eregi_replace() [function.eregi-replace]: Invalid preceding regular expression in /homez.109/aircontr/www/lib/template.php on line 36
            
            tag : {STYLESHEET}
            data : style1.css
            Warning: eregi_replace() [function.eregi-replace]: Invalid preceding regular expression in /homez.109/aircontr/www/lib/template.php on line 36
            
            tag : {LANGUAGE}
            data : window.onload =
            Warning: eregi_replace() [function.eregi-replace]: Invalid preceding regular expression in /homez.109/aircontr/www/lib/template.php on line 36
            
            tag : {LANG}
            data : en
            Warning: eregi_replace() [function.eregi-replace]: Invalid preceding regular expression in /homez.109/aircontr/www/lib/template.php on line 36
            
            tag : {LANG_IMG}
            data : en.png
            Warning: eregi_replace() [function.eregi-replace]: Invalid preceding regular expression in /homez.109/aircontr/www/lib/template.php on line 36


            Je n'ai pas tout mis car les autres sont pareilles. Mais tout semble bon, $tag contient bien ce qu'il faut remplacer, et $data ce par quoi il faut le remplacer :$

            C'est vraiment bizarre que ça marche parfaitement en local et juste pas sur mon hébergement.
            0
            1. Modérateur
              Re,

              Essaie avec des apostrophes
              $this->page = eregi_replace('{' . $tag . '}', $data, $this->page);
              --
              106485010510997108
              0
              1. Waouh j'ai trouvé, j'avais pourtant déjà testé mais là ça marche maintenant en local et sur l'hébergeur :)

                Voici donc la petite solution :

                $tag = '\{'.$tag.'\}';
                $this->page = eregi_replace($tag, $data, $this->page);


                Il fallait donc rajouter des antislashes devant { et devant } car ils peuvent être interpréter sinon, mais ce n'est pas le cas tout le temps apparament ^^

                Merci beaucoup pour l'aide, je n'aurais pas continuer à chercher si tu n'aurais pas continuer de proposer des pistes de solution :P
                0