Tronquer un texte contenant des balises <html> avec substr

cs_tonic1 Messages postés 37 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 2 mai 2006 - 7 juin 2005 à 15:11
cs_tonic1 Messages postés 37 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 2 mai 2006 - 7 juin 2005 à 15:31
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

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 juin 2005 à 15:19
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().
0
cs_tonic1 Messages postés 37 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 2 mai 2006
7 juin 2005 à 15:24
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);
?> 
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 juin 2005 à 15:25
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.
0
cs_tonic1 Messages postés 37 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 2 mai 2006
7 juin 2005 à 15:31
D accord, je te remerci pour l info
0
Rejoignez-nous