0
J'aime supprimer toute balise html vide qui est vide ou contenant des espaces.Reg expression pour supprimer les balises vides (l'un d'entre eux)?
quelque chose comme obtenir:
$string = "<b>text</b><b><span> </span></b><p> <br/></p><b></b><font size='4'></font>";
à:
$string ="<b>text</b>=;
Qu'en est '' tags, ou d'autres balises significatives? Qu'en est-il de 'line1
line2'? Qu'en est-il des étiquettes vides «
En général, c'est une mauvaise idée d'analyser html avec des expressions régulières. Utiliser un analyseur xml à la place –
En outre, je suppose qu'il devrait être '$ string =" texte ";', mais c'est probablement juste une faute de frappe. – Kobi
Répondre
Vous devez exécuter le code à plusieurs reprises afin de le faire uniquement avec des expressions régulières.
l'expression rationnelle qui fait cela est:
Mais par exemple sur votre chaîne que vous devez exécuter au moins deux fois. Une fois qu'il va supprimer le
<br/>
et la deuxième fois va supprimer les<p> </p>
restants.Source
2011-01-18 08:07:32
Source
2011-01-18 08:13:00 akond
cela fait le travail. Juste 1 autres questions: 1) Comment puis-je dire à la fonction quelles étiquettes doivent être supprimées, disons que je dois juste supprimer: p, a et balises span. – walter
Modifiez (\ w +) en (p | a | span). – akond
Après une réflexion réfléchie, je pense vraiment que vous devriez utiliser l'approche DOM à la place plus fiable. – akond
Voici une approche avec DOM:
Ce serait quelque chose de sortie comme
documents XML nécessite un élément racine, donc il n'y a aucun moyen d'omettre cela. Vous pouvez le
str_replace
cependant. Ce qui précède peut gérer le HTML cassé.Si vous souhaitez supprimer sélectivement des nœuds spécifiques, ajustez la requête XPath.
Voir aussi
Source
2011-01-18 08:57:27 Gordon
Questions connexes