Problème de regex en php

Résolu/Fermé
-Xenon- Messages postés 144 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 10 avril 2009 - 10 avril 2009 à 20:08
 patachon - 10 avril 2009 à 20:40
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

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 mardi 29 avril 2008 Statut Membre Dernière intervention 10 avril 2009 17
10 avril 2009 à 20:32
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 jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126 > -Xenon- Messages postés 144 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 10 avril 2009
10 avril 2009 à 20:33
cool, j'y étais presque :p
0
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
10 avril 2009 à 20:31
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 mardi 29 avril 2008 Statut Membre Dernière intervention 10 avril 2009 17
10 avril 2009 à 20:33
Effectivement, j'ai oublié la seconde dièse ! Faute d'inattention o_O !
0
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
Ah, je me suis planté dans ma regex, le m doit-être après le dièse, c'est une option.
0