Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/12/2006, 13h49   #1
Invité de passage
 
Inscription : novembre 2002
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 14
Points : 4
Points : 4
Par défaut simple, vraiment ? texte entre guillemets

Bien le bonjour!

Depuis quelques temps, j'essaie de faire une expression régulière qui me paraît assez simple... Mais quand même, j'y arrive pô.

Dans l'idée, il s'agit de remplacer du texte entre guillemets dans une string, comme par exemple :
Citation:
Et je dis : "et il dit", que ton espoir n'est pas si "desespéré", etc...
Le but, c'est que ça deviennent :
Code html :
Et je dis : <span class="comment">"et il dit"</span>, que ton espoir n'est pas si <span class="comment">"desespéré</span>, etc...

J'utilise donc la magnifique fonction preg_replace comme ceci :
Code :
1
2
$txt = preg_replace("/(\".*\")/i", '"et il dit", que ton espoir n'est pas si "desespéré"', $txt);
echo $txt;
Et c'est pas cool, parce que ça marche pas. Il se mélange les pinceaux quand il y a plus d'un match trouvé (ici, il y en a 2).

Ce que je cherche à faire, c'est de préciser l'expression, en signifiant qu'il faut mettre les span seulement aux éléments entre guillemets " qui ne sont pas précédés de class= "

Alors j'ai essayé de faire des "/[^class=](\".*\")/i" ou des "/(class=)[0](\".*\")/i" mais rien n'y fait... quelqu'un a une idée ?

merci d'avance
Rekam
rekam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 14h19   #2
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Essaie ça :
Code :
preg_replace("/(?<!class=)\"([^\"]*)\"/", "<span class=\"comment\">\"$1\"</span>", $txt);
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 14h35   #3
Invité de passage
 
Inscription : novembre 2002
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 14
Points : 4
Points : 4
Ah ben là, je suis navré de te dire que malheureusement... ça marche !

Excellent, merci bien.

Et du coup, je me suis dit, bêtement comme d'hab, "tiens, et si je l'adaptais pour géré la même chose, mais pour du texte entre simple quote et pas entre guillemets?".

Eh bien force est de constater que mal m'en a pris, car je n'y arrive point, du fait que je ne comprend pas la syntaxe que tu as fournie (mais qui fonctionne et qui, d'ailleurs, et très belle à regarder, au demeurant)

Que faut-il changer pour le texte entre simple-quote, du coup ?

remerci!
re rekam
rekam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 13h04   #4
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Sans tester, je dirais :
Code :
preg_replace("/(?<!class=)'([^']*)'/", "<span class=\"comment\">'$1'</span>", $txt)
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 16h53   #5
Invité de passage
 
Inscription : novembre 2002
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 14
Points : 4
Points : 4
Ouai, ben visiblement, je suis pas encore au point au niveau prog...

Bref, toujours est-il que t'as bien fait de pas tester, t'aurais perdu ton temps, ça marche nickel

Merci trop

rekam
rekam est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h25.


 
 
 
 
Partenaires

Hébergement Web