Passer du HTML->Texte

Statut
N'est pas ouverte pour d'autres réponses.

Ezekiel !

Elite
Hello !
J'ai un probleme que je n'arrive pas à résoudre.
J'ai une chaine de caractere qui contient un texte ainsi que des tag html du style <div>, <strong>,...
Cette chaine est affichée sur un site mais aussi dans un pdf, mais j'aimerais lorsque je l'affiche dans mon pdf virer tout ces tags pour ne garder que du texte "pur".
J'ai pas trouvé de fonction php qui le fait mais je suis sur que un script doit exister qqe part... Niveau langage, je préfere php car je sais qu'on peut le faire en perl mais je n'ai pas envie de me lancer la dedans...
Voila d'avance merci à ceux qui répondront.

EDIT : j'ai un début de solution mais ma regex ne m'enleve pas les </div>, </span>, ... qqun a une idée ?
Code:
$text = preg_replace ('!</?div.+?>!', '', $text);
	$text = preg_replace ('!</?span.+?>!', '', $text);
	$text = preg_replace ('!</?p.+?>!', '', $text);
	$text = preg_replace ('!</?br.+?>!', "\n", $text);
	$text = html_entity_decode($text);
 

FoX SpeEd

Touriste
ben deja tu a bien commencer mais tu n'a pas besoin de regex
Tu fait simplement des str_replace("balise a suprimer", "", $variable de sortie); et ce pour toutes les balise que tu est suceptible de rencontrer dans ton code et c'est tou ;) t
 

Ahava

Revenant
Exactement, tu remplace par du vide ce que tu veux, ainsi tu élimine les balises que tu veux virer de ta chaine :)



Code:
$var = str_replace("<div>","",$var);
$var = str_replace("</div>","",$var);
$var = str_replace("<span>","",$var);
$var = str_replace("</span>","",$var);
 

NoBrain

Touriste
FoX SpeEd a dit:
ben deja tu a bien commencer mais tu n'a pas besoin de regex
Tu fait simplement des str_replace("balise a suprimer", "", $variable de sortie); et ce pour toutes les balise que tu est suceptible de rencontrer dans ton code et c'est tou ;) t
Ca fait quand même un paquet de balises à définir :pfiou:

Voilà une regex qui peut être utile. Elle sélectionne chaque TAG Html, ouvert ou fermé :

</?[a-z][a-z0-9]*[^<>]*>

Ne me demande pas comment l'implémenter dans ton code, j'utilise juste les regex dans des search/replace :-'

Bonne continuation
 

FoX SpeEd

Touriste
NoBrain a dit:
Ca fait quand même un paquet de balises à définir :pfiou:

Voilà une regex qui peut être utile. Elle sélectionne chaque TAG Html, ouvert ou fermé :

</?[a-z][a-z0-9]*[^<>]*>

Ne me demande pas comment l'implémenter dans ton code, j'utilise juste les regex dans des search/replace :-'

Bonne continuation
heu je pense que y manque un truc dans l'expression reguliere il manque pas les " et les ' pcq parfoi tu en à aussi dedans et puis faut voir qu'elle genre de texte tu a pcq si dans ton texte tu a des trucs qui commence par < et termine par > ca va foirer sinon tres bonne idée cette regex

donc ca donnerai : $text = ereg_replace ("</?[a-z][a-z0-9]*[^<>]*>", "", $text);

EDIT: si tu veut garder les retours à la ligne <br> ca va foirer pcq il va les effacer donc tu doit avant ca faire un $text = str_replace("<br>", "\n", $text);
 

NoBrain

Touriste
FoX SpeEd a dit:
heu je pense que y manque un truc dans l'expression reguliere il manque pas les " et les ' pcq parfoi tu en à aussi dedans
J'ai fait des ptits test avant, ça chope bien tout on dirait =]
FoX SpeEd a dit:
et puis faut voir qu'elle genre de texte tu a pcq si dans ton texte tu a des trucs qui commence par < et termine par > ca va foirer
C'est clair que dans ce cas, la regex bouffe n'importe quoi entre < et >
Mais ces caractères sont normalement évités dans une utilisation texte sur le
web pour ce type de raison justement. Il risque de ne pas en rencontrer souvent.
FoX SpeEd a dit:
donc ca donnerai : $text = ereg_replace ("</?[a-z][a-z0-9]*[^<>]*>", "", $text);

EDIT: tu tu veut garder les retour a la ligne <br> ca va foirer pcq il va les effacer donc tu doit avant ca faire un str_replace("<br>", "\n", $text);
Là je laisse faire les pro du code =]
Excellent si il peut/veut garder certaines balises pour le formatage du text :gne:
 
1er
OP
Ezekiel !

Ezekiel !

Elite
Je vais tester ton code Fox speed pour voir ce que ça donne :)
Merci à tous pour vos réponses !
 

gogoprog

Oprahiste vaudou
Moi j'utilisais ca pour virer toutes les balises :

Code:
function message_clean2($message)
{
return nl2br(htmlentities(wordwrap( $message, 1000, "\n", 1)));
}
 

Calvin80

Respect is key
Ahava a dit:
Exactement, tu remplace par du vide ce que tu veux, ainsi tu élimine les balises que tu veux virer de ta chaine :)



Code:
$var = str_replace("<div>","",$var);
$var = str_replace("</div>","",$var);
$var = str_replace("<span>","",$var);
$var = str_replace("</span>","",$var);
hou que c'est pas beau ça dis donc !!
str_replace prends des tableaux aussi en entrée, si je me rappelle bien (la flemme de veirfier lol)?
 

FoX SpeEd

Touriste
Calvin80 a dit:
hou que c'est pas beau ça dis donc !!
str_replace prends des tableaux aussi en entrée, si je me rappelle bien (la flemme de veirfier lol)?

oui ca accepte les tableau comme entrée
 

Calvin80

Respect is key
FoX SpeEd a dit:
oui ca accepte les tableau comme entrée
bien ce qui me semblait ;) donc c pas tres beau/propre d'appeler N fois 'str_replace' :p
 

FoX SpeEd

Touriste
Calvin80 a dit:
bien ce qui me semblait ;) donc c pas tres beau/propre d'appeler N fois 'str_replace' :p
claire mais il allait le faire avec des regex pour finir je croit
 

II phl II

Touriste
Cela dépasse mes compétences, je ne saurai donc t'aider...

Par contre je serais intéressé de savoir comment tu passes tes données dans un pdf :pfiou:

Merci :)
 
1er
OP
Ezekiel !

Ezekiel !

Elite
Donc pour finir, j'utilise le code de Fox Speed couplé au mien qui fait des merveilles.
Pour générer des pdf, j'ai pas réinventé la roue, j'ai choppé une classe ici :
http://www.fpdf.org/
Elle est pas trop compliquée et y a pas mal d'exemple avec une doc en français... le rêve quoi ^^
Merci encore à tout le monde pour les réponses =D
Ps: FoxSpeed j'ai pas reçu ton 2eme mp
 

II phl II

Touriste
merci pour le lien Ezekiel, je ne connaissais pas :-'
 

NoBrain

Touriste
Ez3kieL™ a dit:
Donc pour finir, j'utilise le code de Fox Speed couplé au mien qui fait des merveilles.
De rien ;) =]
 
gogoprog a dit:
Moi j'utilisais ca pour virer toutes les balises :

Code:
function message_clean2($message)
{
return nl2br(htmlentities(wordwrap( $message, 1000, "\n", 1)));
}
Je faisais le même genre de fonction .. ^^

Je pense que c'est le plus simple, sauf si tu veux entrer toute les balises possibles -_-°
 

FoX SpeEd

Touriste
n3tfusiOn a dit:
Je faisais le même genre de fonction .. ^^

Je pense que c'est le plus simple, sauf si tu veux entrer toute les balises possibles -_-°
je ne connaissait pas celle la mais quand g regarder de plus près ce n'est pas seulement pour gerer le problème des retours à la ligne ?? pcq je ne voit pas comment il pourait enlever toutes les balise... :-'
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut