<?php /** * cut_long_word * Entrée * $txt : Texte à découper ; * $where : Longueur maxi d'un mot ; * Retour * Texte passer dans $txt avec un séparateur invisible ajouté toute les $where lettres non séparées par des éspaces */ function cut_long_word($txt, $where=20) { // Si pas de texte, on retourne false if (empty($txt)) return false; $inhtml = false; $inspecialchar = false; // On parcours les caractères for ($c 0, $a 0, $g = 0; $c<strlen($txt); $c++) { // Si le caractère est un < on entre dans du html, il ne faut pas ajouter d'éspaces dans les balises // Du coup on compte plus et on insère plus d'éspace tant qu'on ne trouve pas un > if ($txt[$c]=="<") $inhtml=true; // Si on est pas dans une balise if(!$inhtml) { // De même, si on est dans un caractère spécial html, il ne faut pas ajouter d'espace if ($txt[$c]=="&") { $tmptxt = $txt[$c].$txt[$c+1].$txt[$c+2].$txt[$c+3].$txt[$c+4].$txt[$c+5]; $isinchaine = strpos("&", $tmptxt); if(!($isinchaine === false)) { $inspecialchar = true; } $isinchaine = strpos(""", $tmptxt); if(!($isinchaine === false)) { $inspecialchar = true; } $isinchaine = strpos("'", $tmptxt); if(!($isinchaine === false)) { $inspecialchar = true; } $isinchaine = strpos("<", $tmptxt); if(!($isinchaine === false)) { $inspecialchar = true; } $isinchaine = strpos(">", $tmptxt); if(!($isinchaine === false)) { $inspecialchar = true; } } // Si nous ne somme ni dans une balise html ni dans un caractère spécial html if(!$inspecialchar) { $d[$c+$g]=$txt[$c]; // Si le caractère courant est un espace, on remet le compteur à 0 // Sinon on incrèment le compteur if ($txt[$c]!=" ") $a++; else if ($txt[$c]==" ") $a = 0; // Si le compteur est plus grand que la limite on ajoute le séparateur if ($a>$where) { $g++; $separator = "​"; $a = 0; // Résolution de pb IE<7 : // Si IE < 7il ne connait pas ​ on lui envois l'équivalant html <wbr /> // Pourquoi pas <wbr /> avec tout les nav dans ce cas : // 1 - Opéra ne connait pas <wbr /> // 2 - <wbr /> n'est pas un standard W3C //Création d'une instance de la classe browser // Ici je fais que récuperer le navigateur du client, vous trouverez plein de codes source pour faire ca... $browser = new DDSBrowser; $name = $browser->Name; if(strtoupper($browser->Name)=="MSIE" && $browser->Version<7) { $separator = "<wbr />"; } $d[$c+$g]=$separator; } } else { // On ajoute le contenu du special char $d[$c+$g]=$txt[$c]; } } else { // On ajoute le contenu de la balise html $d[$c+$g]=$txt[$c]; } // Si on es dans un caractère spécial et qu'on rencontre un ; c'est qu'on en sort if ($txt[$c]==";" and $inspecialchar == true) { $a=0; $inspecialchar = false; } // Si on es dans une balise html et qu'on rencontre un > c'est qu'on en sort... if ($txt[$c]==">") { $a=0; $inhtml=false; } } // On retourne la chaine... return implode("", $d); }?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <style type="text/css" media="screen"> div { width : 250px; overflow : hidden; } </style></head> voici_une_chaine_de_caractere_qui_depasse_les_250_pixels_de_large, voici une chaine de caractere qui ne depasse pas les 250 pixels de large
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <style type="text/css" media="screen"> div { overflow : hidden; } </style></head> voici_une_chaine_de_caractere_qui_depasse_les_250_pixels_de_large, voici une chaine de caractere qui ne depasse pas les 250 pixels de large </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <style type="text/css" media="screen"> div { overflow : hidden; width : 100%; } </style></head> voici_une_chaine_de_caractere_qui_depasse_les_250_pixels_de_large, voici une chaine de caractere qui ne depasse pas les 250 pixels de large </html>
<?php // Create a 300x100 image $im = imagecreatetruecolor(300, 100); $red = imagecolorallocate($im, 0xFF, 0x00, 0x00); $black = imagecolorallocate($im, 0x00, 0x00, 0x00); // Make the background red imagefilledrectangle($im, 0, 0, 299, 99, $red); // Path to our ttf font file $font_file = './arial.ttf'; // Draw the text 'PHP Manual' using font size 13 imagefttext($im, 7, 0, 105, 55, $black, $font_file, 'Chaine de caractere qui va etre coupé avant la fin du message à afficher'); // Output image to the browser header('Content-Type: image/png'); imagepng($im); imagedestroy($im); ?>