Problème de regex en php

Résolu
-Xenon- Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   -  
 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 Date d'inscription   Statut Membre Dernière intervention   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 1221 Date d'inscription   Statut Membre Dernière intervention   126 > -Xenon- Messages postés 144 Date d'inscription   Statut Membre Dernière intervention  
 
cool, j'y étais presque :p
0
okuni Messages postés 1221 Date d'inscription   Statut Membre Dernière intervention   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 Date d'inscription   Statut Membre Dernière intervention   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