[RESOLU] Cannot redeclare str_ireplace() in /lib_newsletter.php on line 159

Eléphanteau du PHP | 18 Messages

23 avr. 2009, 13:16

Bonjour à tous,

J'ai une erreur concernant l'utilisation de wanewsletter sur mon site qui est la suivante :

Fatal error: Cannot redeclare str_ireplace() in /lib_newsletter.php on line 159

Le fichier lib_newsletter ne contient qu'une accolade ( } ) à la ligne 159.
Je vous joins donc la partie du fichier lib_newsletter qui semble correspondre à l'erreur (la ligne 159 est la dernière) :

Code : Tout sélectionner

function str_ireplace($find, $replace, $str) { $tmpf = array( '\\','/','[',']','(', ')','*','+','-','?', '^','$','.','|','{','}' ); $tmpr = array( '\\\\','\/','\[','\]','\(', '\)','\*','\+','\-','\?', '\^','\$','\.','\|','\{','\}' ); if(!is_array($find)) $find = array($find); for($a = 0, $b = count($find); $a < $b; $a++) $find[$a] = '/(?i)'.str_replace($tmpf, $tmpr, $find[$a]).'/'; return preg_replace($find, $replace, $str); }
En espérant qu'une âme charitable puisse me venir en aide car je sèche là...

Merci d'avance :)
Modifié en dernier par Henri KI ? le 24 avr. 2009, 13:55, modifié 1 fois.

Mammouth du PHP | 991 Messages

23 avr. 2009, 13:58

d'après l'erreur , tu doit vouloir redeclarer la même fonction.

Cela peut sans doute venir d'un doublon d'include !

Bye Hawk
DevOps, Symfony4, Hoa

ViPHP
AB
ViPHP | 5818 Messages

23 avr. 2009, 19:46

d'après l'erreur , tu doit vouloir redeclarer la même fonction.

Cela peut sans doute venir d'un doublon d'include !

Bye Hawk
Sans doute effectivement.

Eventuellement, quand plusieurs fonctions peuvent faire doublon suite à des include tu peux toujours déclarer tes fonctions comme ceci :
if (!function_exists("str_ireplace"))
{
function str_ireplace($find, $replace, $str) {
      $tmpf = array(
         '\\','/','[',']','(',
         ')','*','+','-','?',
         '^','$','.','|','{','}'
      );
      $tmpr = array(
         '\\\\','\/','\[','\]','\(',
         '\)','\*','\+','\-','\?',
         '\^','\$','\.','\|','\{','\}'
      );
      if(!is_array($find))
         $find = array($find);
      for($a = 0, $b = count($find); $a < $b; $a++)
         $find[$a] = '/(?i)'.str_replace($tmpf, $tmpr, $find[$a]).'/';
      return preg_replace($find, $replace, $str);
} 
}

Eléphanteau du PHP | 18 Messages

24 avr. 2009, 13:54

Génial ! Ca marche parfaitement :)
Merci beaucoup à vous deux, c'est super sympa d'avoir pris le temps de m'aider.