Bonjour,
Voila je rencontre un petit problème avec mon code.
Je cherche à tronquer du texte de cette façon:
$str = str_replace("\'","'",$donnees->contenu );
echo nl2br(substr($str, 0, 255));
Mais ça donne un peu n'importe quoi.
Habituellement j'affiche mon contenu de cette façon:
$str = str_replace("\'","'",$donnees->contenu );
echo nl2br($str);
et ça fonctionne bien. Je vous remercie de votre aide.
Salut,
J'utilise cette fonction pour couper un texte trop long sans avoir des problèmes de balise (< a>, < p>, < img> ...)
/**
* RÉSUMÉ BRUT d'un texte (HTML ou non) : en fonction du NOMBRE de CARACTERES
* + Suppression des balises HTML éventuelles
* ---------------------------------------------------
* © Jérome Réaux : http://j-reaux.developpez.com - http://www.jerome-reaux-creations.fr
* Création : juin 2009 en collectif : Xunil, jreaux62, s.n.a.f.u., FoxLeRenard, Doksuri, Patouche
* http://www.developpez.net/forums/d757484-8/php/langage/contribuez/discussion-reparer-code-html/
* Pour ne pas couper un mot, le compte s'arrêtera à l'espace suivant
* ---------------------------------------------------
* @param string $texte Le texte initial (avec ou sans des balises HTML)
* @param int $nbreCar Le NOMBRE de caractères texte à afficher (sans compter les balises HTML)
* @return string Texte couper
*/
function texte_resume_brut($texte, $nbreCar) {
$texte = trim(strip_tags($texte, '<br><p><a>')); // suppression des balises HTML
if(is_numeric($nbreCar))
{
// COUPE DU TEXTE pour le RÉSUMÉ
// ajout d'un espace de fin au cas où le texte n'en contiendrait pas...
$texte .= ' ';
$LongueurAvant = strlen($texte);
if ($LongueurAvant > $nbreCar) {
// pour ne pas couper un mot, on va à l'espace suivant
$texte = substr($texte, 0, strpos($texte, ' ', $nbreCar));
}
}
return $texte;
}
J'essai aussi de cette façon, mais pareil:
$str = str_replace("\'","'",$donnees->contenu );
echo mb_strimwidth($str, 0, 255, "...");
Merci. J'ai vu qu'avec strip_tags ça fonctionnait pas non plus mais pas avec la césure des mots.