2010-09-29 27 views
0

Comment puis-je obtenir toutes les balises non fermées dans une chaîne donnée, de préférence dans l'ordre où elles doivent être fermées?PHP obtient toutes les balises HTML non fermées dans la chaîne

Remarque: Considérez qu'il n'y a pas d'erreur dans le code HTML et qu'il a juste été coupé après X caractères. Non, ce n'est pas un cas de mauvais ou les balises HTML qui se chevauchent, etc. De plus il n'y aura pas de fin

Exemple: <p><span>Lorem</span><b>ipsum --- --- retour > </b></p>
-OU-
<ul><li>1</li><li>2 --- return-- Donc, si la chaîne est concaténée avec la sortie de la fonction, elle va recréer un code HTML valide.

Je ne suis pas sûr si un RegExp ferait l'affaire ici, au fond, je veux tout ce qui est entre <et> qui ne dispose pas d'un </> correspondant à la balise de fermeture.

Merci.

+2

pourquoi ne pas simplement utiliser bien rangé? – Hannes

+0

Qu'en est-il d'une balise '' qui n'est pas fermée? Est-ce que cela vous intéresse? (Je me rends compte que cela ne fonctionnera pas avec la fonction de fermeture que vous avez, mais vous pourriez obtenir des balises qui ne sont pas utilisées, comme ''.) –

+1

Hey. L'algorithme actuel s'assure que la troncature ne se produit pas au milieu d'une balise et que les balises '' sont terminées par ''. Donc, ce n'est pas un problème dans ce cas particulier. – Francisc

Répondre

3

Ce n'est pas une tâche facile. Vous voudrez peut-être regarder Tidy:

Tidy est une liaison pour le HTML Tidy utilitaire propre et de réparation qui vous permet non seulement propre et sinon manipuler des documents HTML, mais aussi traverse l'arbre du document.

http://php.net/manual/en/book.tidy.php