WordWrap ameliore sans html
Si vous est ici, c\'est que la fonction
wordwrap fourni par php ne vous suffit pas.
Voici une fonction qui va coupé les mots, sans coupé le html contenu dans le texte. De cette façon, plus de probleme avec les liens ou les images.
function noHtml_wordwrap($str,$cols,$cut) {
$tag_open = \'<\';
$tag_close = \'>\';
$count = 0;
$in_tag = 0;
$str_len = strlen($str);
$segment_width = 0;
for ($i=0 ; $i<=$str_len ; $i++){
if ($str[$i] == $tag_open) {
$in_tag++;
} elseif ($str[$i] == $tag_close) {
if ($in_tag > 0) {
$in_tag--;
}
} else {
if ($in_tag == 0) {
$segment_width++;
if (($segment_width > $cols) && ($str[$i] != \" \")) {
$str = substr($str,0,$i).$cut.substr($str,$i+1,$str_len-1);
$i += strlen($cut);
$str_len = strlen($str);
$segment_width = 0;
}
}
}
}
return $str;
Il est inspiré de divers contribution de cette page : http://fr.php.net/wordwrap
Ecrit le 9-/-0/2005 par Sky
http://www.graphiks.net
Ajouter un commentaire
-
Le 03-05-2008, Nico a écrit :
C'est exactement le code qu'il me faut, je dois faire du wordwrap sur du texte contenant du code html (des balises <span> pour de la mise en forme), mais malheureusement, j'ai des erreurs lors de l'execution de cette fonction. Je crois qu'il manque "}" de fin de fonction mais c'est surtout avec les "" dans les variables $tag_open et $tag_close, et un peu plus loin dans le code aussi "($str[$i] != " ")".
Merci d'avance