|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2005 Messages : 12 ![]() |
Bonjour,
Voila je me galère avec les expressions regulières. J'ai cherché sur le forum mais j'ai pas trouver ma soluce En fait je cherche a supprimer toutes les balises DIV et SPAN dans une chaine de caractère mais je ne sais pas comment faire. Les balises DIV et SPAN commencent toutes par : <DIV kelkechose> ou <SPAN kelkechose> et se terminent toutes par </DIV> ou </SPAN> En fait je me galère surtout pour le kelkechose J'ai essayer un truc comme ça mais ça marche pas, et tpout cause me direz vous Code :
$html = preg_replace("<div|span.+[^>]>", "NADA", $aTEST[$i]['CHAPEAU']); Merci |
|
|
00
|
|
|
#2 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Salut
Il faut bien voir que les fonctions preg_() ont besoin de délimiteurs de ton expression. Pourquoi ? Simplement car cela te permet de spécifier des modificatuers après ton expression. Un très grand nombre de caractères peut servir de délimiteur en PHP. Ici, j'imagine que PHP a pris "<" et ">" pour délimiter ton expression, ce qui fait qu'ils ne sont pas contenus dans le masque réel. Voici ce que je te propose : Code :
'#<(?:div|span)[^>]*>.*</(?:div|span)>#Usi'
Je te recommande de le faire en deux fois (une DIV et une SPAN).
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() |
Yogui
est ce que votre code marche avec php 4.*? car j'ai eu l'erreur suivante: Code :
|
||
|
|
00
|
|
|
#4 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
C'est une syntaxe PCRE (Perl Compatible Regular Expressions) donc valable uniquement avec les fonctions de l'extension éponyme (fonctions preg_*). Il serait bon de prendre note du caractère "obsolète" des fonctions dites POSIX (ereg*) : elles ne sont pas aussi performantes et souples que les autres et ne font plus partie du core.
Et au cas où : Initiation aux expressions régulières en PHP (j'oubliais de préciser que ces fonctions PCRE n'ont pas de pré-requis quant à la version de PHP) |
|
|
00
|
|
|
#5 | ||||
|
Membre du Club
![]() Inscription : juin 2003 Messages : 83 ![]() |
Citation:
petite question sur ta regexp : En fait, j'ai le même problème que deloo mais après avoir suivi le cours sur ce site, je suis arrivé à ça : Ce qui fonctionne très bien. En conséquence de quoi je ne vois pas l'utilité de la séquence [^>]* dans l'exemple de Yogi ? Edit : en fait j'ai compris : [^>]* veut dire : "tous les caractères (de 0 à n pour la quantité) sauf le >" "?:" : kezako ? Après moulte recherche (car l'explication du tuto n'est pas très claire, j'ai trouvé à http://www.expreg.com/optimisation.php : Citation:
Edit : J'ai trouvé pour ça aussi : je fais : Code :
merci à+ |
||||
|
|
00
|
|
|
#6 | |||||
|
Membre du Club
![]() Inscription : juin 2003 Messages : 83 ![]() |
Re,
J'ai une autre question en rapport avec les expressions régulières et l'appel de preg_replace. En gros, en faisant comme suit : Code :
Citation:
Vu que je veux éradiquer les SPAN, je dois faire une boucle : Code :
Si déjà je suis dedans autant aller jusqu'au bout de l'apprentissage Je vous remercie ! à+ |
|||||
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() |
Bonjour
-cela supprime les balises div: $chaine = preg_replace("@</?div[^>]*?>@si", '', $chaine); -et celui là supprime les balises div avec leur contenu $chaine = preg_replace("@<div[^>]*?>.*?</div>@si", '', $chaine); mais la 2eme ne fonctionne pas tout le temps et je crois c'est parce que qu'elle n'inclut pas quelques caractères spéciaux. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com