PHP: fonction pour convertir un texte HTML en texte brut
Pour l’envoi des derniers billets du blog par email, j’ai cherché une fonction PHP permettant de convertir un texte HTML en texte brut… pas facile du tout, ou alors, je n’ai pas cherché au bon endroit ;). Pour finir, je me suis rabattu sur des fonctions de SPIP (vu qu’il existe un filtre SPIP “textebrut”). Voici ce que j’ai utilisé et qui fonctionne bien:
// Suppression basique et brutale de tous les < ...>
function supprimer_tags($texte, $rempl = "") {
// super gavant : la regexp ci-dessous plante sous php3, genre boucle infinie !
// $texte = ereg_replace("< ([^>\"']*|\"[^\"]*\"|'[^']*')*>", $rempl, $texte);
$texte = ereg_replace("< [^>]*>", $rempl, $texte);
return $texte;
}
// Convertit un texte HTML en texte brut
function textebrut($texte) {
$texte = ereg_replace("[\n\r]+", " ", $texte);
$texte = eregi_replace("< (p|br)([[:space:]][^>]*)?".">", "\n\n", $texte);
$texte = ereg_replace("^\n+", "", $texte);
$texte = ereg_replace("\n+$", "", $texte);
$texte = ereg_replace("\n +", "\n", $texte);
$texte = supprimer_tags($texte);
$texte = ereg_replace("( | )+", " ", $texte);
return $texte;
}
Si vous connaissez une fonction plus simple, je suis preneur :). J’ai essayé la fonction strip_tags qui m’enlevait bien les balises HTML mais qui me laissait les espaces br ou p…
No tag for this post.
Vous aimez ce type de contenu?
Alors suivez-ce blog par RSS ou par email!
28 February 2006 à 12:18
Ca sert à quoi ? A envoyer une page html pour qu’elle s’affiche dans le client mail qui la reçoit ?
ah…
Je désire envoyer par email les derniers billets du blog pour ceux qui n’utilisent pas RSS. Il me fallait pour cela le contenu des billets sans tout le tralala HTML (liens, gras, saut de ligne, etc.), du texte brut de chez brut en somme. D’où le besoin d’une telle fonction.
david
4 January 2007 à 16:17
J’ai trouvé une classe, je ne sais pas si ça peut vous aider:
http://www.chuggnutt.com/html2text.php
15 April 2008 à 17:29
merci, ce lien m’ a été très très très utile:
http://www.chuggnutt.com/html2text.php
en l’ appelant comme celà ça marche du tonnerre:
public function textebrut($texte)
{
$texte=strtr($texte,”ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ”,”aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn”);
$h2t = new html2text($texte);
$text = $h2t->get_text();
return $text;
}
car la classe ne gère pas les accents!