2011-04-17 11 views
0

Je passe en revue une liste de mots remplacés en utilisant preg_replace. Voici le code que je utilise:PHP: preg_replace le signe #

foreach ($words->Reserved as $reserved) 
    $code = preg_replace(('/\b(' . $reserved . ')\b/'), ('<cs_reserved>' . $reserved . '</cs_reserved>'), $code); 

L'expression utilisée ci-dessus fonctionne parfaitement, sauf si $reserved contient un signe #. J'ai essayé d'utiliser des supports (comme vu ci-dessus), et cela n'a pas aidé.

Je ne suis pas très bon en regex, donc ce qui précède n'est peut-être pas idéal, mais il fait exactement ce qu'il faut faire pour mon projet.

Toute aide serait appréciée. :)

Répondre

3

utilisation preg_quote

$code = preg_replace(('/\b(' . preg_quote($reserved) . ')\b/'), ('<cs_reserved>' . $reserved . '</cs_reserved>'), $code); 
+0

+1 pour la réponse, et l'effet "oh, propre". Je ne savais même pas que cela existait mais bon à savoir. –

+0

Vous devriez ajouter '/' comme deuxième argument. – alex

+0

Il semble n'avoir aucun effet ... même avec la suggestion d'Alex. –