Tronquer un texte contenant des balises <html> avec substr

Signaler
Messages postés
37
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
2 mai 2006
-
Messages postés
37
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
2 mai 2006
-
Bonjour à tous, je suis confronté à un petit probleme, et pas moyen de trouver une solution sur le forum.

J aimerai decoupé un texte avec la fonction substr, mais le probleme , c est que ce texte contient des balises HTML style <table> <tr><td>.... donc parfois, lorsque j utilise ma fonction substr, les balises sont coupée, ce qui fait qu il s affcihe n importe quoi à l ecran.

Existe t il une fonction PHP permettant de nettoyer un texte des balises <HTML>, afin d'être sûr d avoir un texte sans aucune balise, et donc de ne plus avoir ce probleme.

Merci a tous ! !

4 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,



t'as pas du beaucoup cherche...:

Pour effacer le html completement :

strip_tags ()



Pour transformer le html en entites html (pour qu'il ne soit pas interprete, quoi) :

htmlspecialchars() ou htmlentities()



Quant a substr, tu l'utilises mal, s'il te coupe tes balises...;-) Une
fois que tu as enleve quelquechose de ta chaine, sa longueur change, et
la position des mots a l'interieur aussi...et comme il y a pas mal de
chance que tu utilises la longueur de la chaine, ou du moins la
position d'une balise a enlever...il faut relire la longueur et
chercher a nouveau la position d'un mot avant de refaire un substr().
Messages postés
37
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
2 mai 2006

Merci beaucoup, mes criteres de recherche ne devait pas etre bon!

J ai trouve un code pas mal, puisqu'il n y a pas besoin de s embeter a écrire toutes les balises HTML que je veux enlever :


Conversion HTML en texte,
----

<?php
// $document contient un document HTML
// Ce script va effacer les balises HTML, les javascript
// et les espaces. Il remplace aussi quelques entit&#233;s HTML
// courante en leur &#233;quivalent texte.

$search = array ("'<script[^>]*?>.*?</script>'si",  // Supprime le javascript
"'<[\/\!]*?[^<>]*?>'si",           // Supprime les balises HTML
"'([\r\n])[\s]+'",                 // Supprime les espaces
"'&amp;(quot|#34);'i",                 // Supprime les entit&#233;s HTML
"'&amp;(amp|#38);'i",
"'&amp;(lt|#60);'i",
"'&amp;(gt|#62);'i",
"'&amp;(nbsp|#160);'i",
"'&amp;(iexcl|#161);'i",
"'&amp;(cent|#162);'i",
"'&amp;(pound|#163);'i",
"'&amp;(copy|#169);'i",
"'&amp;#(\d+);'e");                    // Evaluation comme PHP

$replace = array ("",
"",
"\\1",
"\"",
"&amp;",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");

$text = preg_replace($search, $replace, $document);
?> 
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Heu, strip_tags() ne te fait pas specifier toutes les balises que tu
veux enlever...mais celles que tu ne VEUX PAS enlever, lol. Si tu ne
mets pas ce parametre, il les enleve toutes, par defaut.
Messages postés
37
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
2 mai 2006

D accord, je te remerci pour l info