OVH Cloud OVH Cloud

[HS] : question sur le parsing des atributs

1 réponse
Avatar
Etienne SOBOLE
Salut.
je ne pense pas que cela concerne directement le PHP, mais je cherche une
expression régulière pour virer un attribut d'une balise...
genre virer le target d'une balise A

un truc genre
$html = preg_replace(
"/(<\s*a\s*)(target='.*')(\s*[^>]*>)/iU",
"\$1\$3",
$html );

sauf qu'evidment mon code ne marhe pas pour plusieurs raisons:
- d'abord je supose que l'attribut se trouve juste apres le nom de la balise
- ensuite je suppose que le nom du target est entre '
- enfin si y a pas de target ca marche pas non plus !!!

bref.
ca marche pas.
si quelqu'un peut me filer un petit coup de main !!!

PS : j'ai trouvé comment le faire en plusieurs passes, c'est a dire en
récupérant touts les balises A
avec l'expresion réguliere suivante: "/<\s*a\s*[^>]*>/iU"
puis en traitant à l'interieur les tragets... je cherche juste a le faire en
un seul coup !

voila merci
Etienne

1 réponse

Avatar
Olivier Miakinen

je ne pense pas que cela concerne directement le PHP, mais je cherche une
expression régulière pour virer un attribut d'une balise...


Comme d'hab, en l'absence de groupe consacré aux expressions régulières,
celles-ci sont tolérées ici.

[...]

PS : j'ai trouvé comment le faire en plusieurs passes, c'est a dire en
récupérant touts les balises A
avec l'expresion réguliere suivante: "/<s*as*[^>]*>/iU"
puis en traitant à l'interieur les tragets... je cherche juste a le faire en
un seul coup !


Voici comment faire deux passes en un seul coup :
http://www.php.net/manual/fr/function.preg-replace-callback.php

Ta première expression récupère les balises A, et les passe à la
fonction de callback qui elle-même peut faire un autre preg_replace
pour virer les attributs target.

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.