Problème de regex en php

Résolu
-Xenon- Messages postés 144 Statut Membre -  
 patachon -
Bonsoir,

je suis en train de créer un script de coloration syntaxique en php pour les besoins de mon site web. Mais je me heurte à un problème...
J'ai créé une fonction régulière afin que, si le visiteur entre un commentaire ( //Mon commentaire par exemple), celui-ci soit coloré en orange :

$texte = preg_replace('#//(.+)\s$', '<span style="color:orange">$1</span>', $texte);

Mais c'est tout mon code qui est coloré en orange après les deux slashs...

J'aimerais que, lorsqu'il y a une retour chariot, la coloration en orange s'arrête... Pouvez-vous m'aider ?

Merci d'avance.

Xenon
A voir également:

4 réponses

patachon
 
Bonsoir,

Le commentaire ne doit pas contenir de saut de ligne ?
Comme un commentaire en php donc ?

Ceci devrait convenir alors.

$texte = preg_replace('#^//(.+)$m#', '<span style="color:orange">$1</span>', $texte); 
0
-Xenon- Messages postés 144 Statut Membre 17
 
Merci de ta réponse patachon, mais je viens juste de résoudre mon problème :

$texte = preg_replace('#//[\sa-z0-9._/-]+#i', '<span style="color:orange">$0</span>, $texte);

Mais merci beaucoup tout de même !

Bonsoir !
0
okuni Messages postés 1325 Statut Membre 126 > -Xenon- Messages postés 144 Statut Membre
 
cool, j'y étais presque :p
0
okuni Messages postés 1325 Statut Membre 126
 
Elle est bizarre ta regex, j'aurais plutot fais ça comme ceci (si j'ai compris ce que tu voulais faire)
preg_replace('#'.$commentaire.'*#is', '<span style="color:orange">$0</span>', $texte)
$commentaire est le mot que le visiteur entre.
Je ne comprend pas pourquoi tu ne met pas de 2ème "#". Pour moi il faut obligatoirement en mettre un mais je ne suis pas un expert. ;)
0
-Xenon- Messages postés 144 Statut Membre 17
 
Effectivement, j'ai oublié la seconde dièse ! Faute d'inattention o_O !
0
patachon
 
Ta regex ne fonctionnera pas.

Ils sont où les apostrophes, guillemets, caractères accentués, et tous les autres.

Tu ne peux énumérer tous les caractères possibles.
0
patachon
 
Ah, je me suis planté dans ma regex, le m doit-être après le dièse, c'est une option.
0