preg_replace : Failed evaluating code

Eléphanteau du PHP | 38 Messages

31 oct. 2011, 17:17

Bonjour,

J'ai un soucis avec une fonction de traitement de bbcode => html

J'ai une ligne avec un preg_replace avec delimiter "e" (qui appel une fonction) qui pose soucis quand dans $string j'ai une variable avec un crochet.
Exemple :

Code : Tout sélectionner

$string= '[code]$aze[]
';
$string = preg_replace('#\[code\](.*)\[/code\]#iseU', 'bbcode_code("\\1")', $string );
[/code]
Me donne
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/test/www/test.php(7) : regexp code on line 1

Fatal error: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Failed evaluating code: acode("$aze[]") in /home/test/www/test.php on line 7
Ce qu'il aime pas c'est bien sur qu'il y ait une variable $var[] avec des crochets. Sans crochets ça ne fait pas de problème. Pourquoi ? Comment résoudre proprement le problème ?

Merci.

Mammouth du PHP | 672 Messages

03 nov. 2011, 12:48

Bonjour.

1. Comme le dit le message d'erreur, PHP attend une chaîne ou une variable ou un index d'un tableau numérique se trouvant dans une chaîne de caractères.
Là tu lui donnes un tableau, forcément il râle !

2. D'ailleurs, tu ne lui donnes pas un tableau en fait...
Tu lui donnes $aze[], qui ne veut rien dire (en tout cas pas comme ça). #-o

Je ne sais pas ce qu'il y a dans ton tableau, donc c'est difficile d'en dire plus.
Par exemple, si tu veux appliquer le preg_replace sur le 1er élément du tableau, il faut faire :
$string= '[code ]$aze[0][/code]';
$string = preg_replace('#\[code\](.*)\[/code\]#iseU', 'bbcode_code("\\1")', $string );
Modifié en dernier par macgawel le 03 nov. 2011, 15:44, modifié 1 fois.

Eléphant du PHP | 275 Messages

03 nov. 2011, 15:35

Code : Tout sélectionner

$string= '[code]$aze[]
';
$string = preg_replace('#\[code\](.*)\[/code\]#iseU', 'bbcode_code(\'\\1\')', $string );[/code]