PHP: strip_tags - supprimer que seulement certaines balises (et leur contenu)?
- Je utiliser le strip_tags()
fonction, mais j'ai besoin de supprimer certains tags (et tout leur contenu).
par exemple :
<div>
<p class="test">
Test A
</p>
<span>
Test B
</span>
<div>
Test C
</div>
</div>
Disons, j'ai besoin de se débarrasser de la P et de balises SPAN, et de ne garder que :
<div>
<div>
Test C
</div>
</div>
strip_tags
s'attend à ce qu'un deuxième paramètre les balises que vous souhaitez CONSERVER.
Dans cet exemple particulier, je pourrais utiliser striptags($html, "<div>");
mais le html je suis de grattage et les balises qui doivent être supprimés sont différents de tous les temps.
J'ai cherché pendant des heures pour une fonction qui convient à mes besoins, mais ne pouvais pas trouver quelque chose d'utile.
Toute idée?
- Démarrer avec DOM et XPath
- Question déjà répondu ici: stackoverflow.com/questions/9788621/...
- J'ai essayé la accepté de répondre dans ce post, mais n'était pas satisfait avec les résultats
Vous devez vous connecter pour publier un commentaire.
Utiliser une expression régulière. Quelque chose comme ceci devrait fonctionner:
La démo le montre le remplacement de la désirée balises avec rien.
Notez que vous devrez peut-être ajuster plus, disons, pour compenser les espaces dans les balises ou autres inconnues que ton exemple n'est pas à démontrer.
Ici est que l'expression régulière à utiliser pour capturer des balises avec ou sans attributs:
'#<(' . implode( '|', $tags) . ')[^>]+>.*?</\1>#s'
.Vous dire que vous êtes à l'aide de Simple HTML DOM (Bon!!! C'est la bonne façon d'analyser HTML). Quand j'ai besoin de supprimer une balise et son contenu, je n':
La dernière ligne est nécessaire parce que le DOM se confond après que des modifications sont apportées de sorte que la totalité du DOM doit être effondré et puis analysé à nouveau de sorte que les changements sont permanents (OMI, un bug en Simple HTML DOM).
La Simple HTML DOM approche est plus sûr et plus stable qu'une expression régulière.