![]() |
Reg Ex - Remplacer des mots sauf entre certaines balises - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Reg Ex - Remplacer des mots sauf entre certaines balises (/showthread.php?tid=5592) Pages :
1
2
|
RE: Reg Ex - Remplacer des mots sauf entre certaines balises - niahoo - 27-07-2011 c'est dans quel but au final ? Car si tu dois multiplier les cas pour traiter les <a et <h1 puis un jour les <img, rajouter des patterns, changer les remplacements, etc. et bien je partirais sur ma première proposition, plus facilement évolutive sans effort. RE: Reg Ex - Remplacer des mots sauf entre certaines balises - Wells - 27-07-2011 Le but est d'ajouter des lien a la place de mots dans un corps de texte. Voici le code actuel qui gère les images en plus avec quelques cas spéciaux de traités: Code : $Texte=str_replace('%20',' ',$Texte); RE: Reg Ex - Remplacer des mots sauf entre certaines balises - Bertrand - 27-07-2011 Ca a l'air de pouvoir se faire avec des regex "imbriquées" (en tout cas ça marche sur ton 1er exemple)
En fait, je m'intéresse à ce qu'il y a avant les balises (ici je me suis limité à h1 et a), ou à ce qu'il y a après toutes les balises. Et j'applique vraiment la substitution à ces sous-ensembles. Si on le déroule sur ton exemple : Entrée: 'Du texte avec un titre : <h1>super titre</h1> et un second titre, mais vaux mieux cliquer <a href="lien du titre ici"> sur ce titre ci </a> pour un meilleur titre'; 1ère correspondance: "Du texte avec un titre : <h1>super titre</h1>" 2nde : "et un second titre, mais vaux mieux cliquer <a href="lien du titre ici"> sur ce titre ci </a>" 3ème : "pour un meilleur titre" (quand on trace tout l'algo, il y en a même une 4ème, complètement vide) Résultat : 'Du texte avec un PAF : <h1>super titre</h1> et un second PAF, mais vaux mieux cliquer <a href="lien du titre ici"> sur ce titre ci </a> pour un meilleur PAF' Dans la fct anonyme, $match[1] vaut ce qu'il y a avant les balises, ou le reste de la chaîne (selon que l'on trouve ou non les balises voulues). Donc c'est sur lui que j'applique la substitution utile. Pour info, $match[2] est la suite de la chaîne (une chaîne vide si on arrive à la fin). Et dans le cas où l'on trouve les balises, $match[3] $match[4] $match[5] sont la balise ouvrante, le contenu et la balise fermante (la décomposition de $match[2]). Appliqué à la 1ère correspondance: $match[1]="Du texte avec un titre : " $match[2]="<h1>super titre</h1>" $match[3]="<h1>" $match[4]="super titre" $match[5]="</h1>" J'avoue être surpris que ça marche. J'ai ajouté l'alternative avec $ sans y croire, mais ça fonctionne (encore une fois, sur ton exemple). |