Soyez le premier à donner votre avis sur cette source.
Snippet vu 4 278 fois - Téléchargée 28 fois
<? function format_chaine($chaine,$longueur){ $chaine=trim($chaine); //vire les espaces en début et fin de chaine $chaine=strtr($chaine,array_flip(get_html_translation_table(HTML_ENTITIES))); //vire les cars html qui vont perturber le comptage des lettres $mots=explode(' ',$chaine); //sépare tous les mots $nb_mots=count($mots); //compte le nb de mots $pos=0; for($i=0;$i<=$nb_mots-1;$i++){ if(strlen($mots[$i])>$longueur){ //si le mot rentre pas sur une seule ligne $debut=0; if($longueur-strlen($ligne[$pos])>=$longueur/3){ //si il reste plus d'un tiers de la ligne dispo $debut=$longueur-strlen($ligne[$pos]); $ligne[$pos].=substr($mots[$i],0,$debut); // on place sur cette ligne le début du mot } $nb_lignes=ceil((strlen($mots[$i])-$debut)/($longueur-1)); //nb de lignes nécessaires pr ce mot for($j=0;$j<=$nb_lignes;$j++){ $ligne[$pos].=substr($mots[$i],$debut,$longueur); //on découpe ce mot sur le nb de lignes nécessaires $debut+=$longueur; } }else{ //si le mot rentre sur une ligne if(strlen($ligne[$pos])+strlen($mots[$i])<=$longueur){ //y'a encore de la place sur cette ligne? $ligne[$pos].=$mots[$i].' '; //oui: on y ajoute le mot }else{ //non: on ajoute le mot sur une autre ligne $pos++; $ligne[$pos].=$mots[$i].' '; } } } for($i=0;$i<=count($ligne)-1;$i++){ //on remet les caractères html $ligne[$i]=htmlentities($ligne[$i]); } $resultat=implode("<br>\n",$ligne); //on crée une chaine toute propre return $resultat; } ?>
if (document.post.message.value.length !="")
{
mot=document.post.message.value.substring(" "," ");
espace = document.post.message.value.indexOf(" ");
mot2 = document.post.message.value.substring(espace+1," ");
if ((mot2.length > 17 ) || (mot.length > 17 )) {alert("Y'a un mot trop long dans ce commentaire");
return false;}
}
et dans la page qui recoit les données je met ca:
$HTTP_POST_VARS[message]= str_replace("
","
",($HTTP_POST_VARS[message]));
j'y avais pas pensé cette mise en page
mais y'a un truc que j'aurais aimé faire c spécifier une longueur max en pixels et non en nb de caractères c la que ça devient + intéressant mais je sais pas comment faire lol
va voir ça quand je parle du screen lol http://screen.kame-house.org/image.jpg (en haut mon script, en bas le tien)
donc ton script il rend pas la mise en forme. par exemple :
"salut
eax
ça va ?"
il va écrire "salut eax ça va ?" (Regarde sur le screen la ou c écrit "Pour Renaud et Florent" : dans mon script y a retour a la ligne et pas dans le tien)
Manque juste un nl2br() : return nl2br($resultat);
Ensuite sur le screen c une news que j'avais de mon site et j'ai ajouté plein de fois "a" (plus de 200 fois je crois) et ton script le coupe pas.
Sinon tu attaques différement la chose toi, tu t'occupes de la taille de la ligne, moi je m'occupes de la tailles des mots, c 2 approches différentes mais ça marchera quand meme :)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.