Comment formater le contenu textuel de votre base de donnée en HTML

Normalement, si votre site permets à vos visiteurs de publier des messages ou à des éditeurs de contribuer au site en publiant des articles, et que ceux-ci sont enregistrés dans une base de donnée telle que MySQL, le contenu textuel soumis est du texte simple, non formaté en HTML. Alors comment faire pour afficher ce contenu sur votre site de façon à ce qu’il soit formaté correctement en HTML?

Il existe une première fonction incluse avec PHP pour ajouter une balise <br /> au retour chariot / saut de ligne: nl2br. Son utilisation est simple, il suffit de l’utiliser en affichant la variable qui contient le texte:

echo nl2br($votre_article);

Maintenant, le formatage HTML résultant n’est pas exactement optimal au niveau sémantique, surtout si vous utilisez XHTML. Un article correctement formaté devrait employer des paragraphes <p></p> et non deux break lines <br /><br /> lorsqu’il y a deux retour chariot / saut de ligne. Voici une fonction qui vous permets de structurer votre contenu en paragraphes:

1
2
3
4
5
6
7
8
9
10
function nl2p ($texte){
 
	$texte = "<p>" . $texte . "</p>";
	$texte = str_replace("\n", "</p><p>", $texte);
	$texte = str_replace("\r", "", $texte);
	$texte = str_replace(array("<p></p>", "<p> </p>"), "", $texte);
	$texte = str_replace("</p><p>", "</p>\n<p>", $texte);
	return $texte;
 
}

Comme vous pouvez voir, on en profite aussi pour effacer les lignes de texte vide, qui sont courantes dans ce genre de situation. La dernière ligne de code avant le return nous permets d’avoir un document source où les paragraphes sont bien divisés, de façon à être plus compréhensible lors d’une révision du code.

Vous n’avez ensuite qu’à l’appeler comme la fonction précédente:

echo nl2p($votre_article);

Dans la même logique, pour faire une liste HTML (<ul><li></li></ul>) où chaque ligne est séparée par un retour chariot / saut de ligne, voici comment procéder:

1
2
3
4
5
6
function nl2li($texte) {
	 $texte = "<ul><li>" . $texte ."</li></ul>";
	 $texte = str_replace("\n", "</li>\n<li>", $texte);
	 $texte = str_replace("<li></li>", "", $texte);
	 return $texte;
}

Même appel à la fonction:

echo nl2li($votre_liste);

Partager cet article:

  • del.icio.us
  • Facebook
  • StumbleUpon
  • Twitter
  • LinkedIn

Catégories: Programmation web | 1 commentaire »
Les tags de cet article: ,

Note: Merci pour vos commentaires, j'apprécie ceux qui partagent leurs avis et leurs expériences de webmestre, ou s'il y a lieu, indiquent une erreur dans mes tutoriels, mais je ne peux évidemment pas faire de support technique pour votre site, alors veuillez éviter d'en faire la demande dans cette section.

Un commentaire pour “Comment formater le contenu textuel de votre base de donnée en HTML”

  1. cbandiera dit: 22 décembre 2009 at 9:24

    Excellent site que le votre
    ou j’apprends plein de choses
    moi qui apprend seul, m’egare et pinaille
    cette fontion est interessante, et dire que je me fais ch.. a saisir les balises a la main
    claude

Laisser un commentaire