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:
function nl2p ($texte){
$texte = "" . $texte . "
";
$texte = str_replace("\n", "", $texte);
$texte = str_replace("\r", "", $texte);
$texte = str_replace(array("
", "
"), "", $texte);
$texte = str_replace("", "
\n", $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:
function nl2li($texte) {
$texte = "
- " . $texte ."
Même appel à la fonction:
echo nl2li($votre_liste);
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