J’ai découvert sur internet un script pour tronçonner des chaînes de caractères sans séparateur en fonction d’un nombre de caractères définis. Ce script était buggué et il est recopié partout; Je le corrige donc pour vous en donner une version qui fonctionne :
function tronque($com, $nb)
{// partition de la chaine $com en tronçon de $nb caractères
$longueur = strlen($com);
$posA = 0;
$posB = $nb;
$mart = $com;
$posD=$posB;
while ($longueur > $posA)
{
while(substr($mart,$posD,1) != " ")
{
$posD=$posD+1;
if($posD>$longueur)break;
}
//$posB=$posD;
$buff = substr($com, $posA, $posB);
if ($posA<>$longueur-$nb){
$Texte = $Texte."$buff<br>"; }
else {$Texte = $Texte."$buff";}
$posA = $posA + $posB;
$posB=$nb;
$posD=$posB;
$buff = "";
$mart = substr($com,$posA,$longueur);
}
$buff = substr($com, $posA, $longueur);
$Texte = $Texte.$buff;
return $Texte;
}
et hop ça marche !!!
Exemple d’appel tronçonnant tous les 8 caractères la chaîne « DVD12345DVD67890« : tronque( »DVD12345DVD67890« , 8), donnera
DVD12345
DVD67890
Bonjour, je viens de tomber sur votre blog et je me demandais si cette fonction ne pourrait pas tout simplement être remplacée par un simple str_split :
Cordialement,
Thomas
Tout à fait Thomas, str_split est plus rapide à coder :
< ?php
$str = "DVDMOMQ1DVDMOMQ2DVDMOMQ3DVDMOMQ4";
$arr2 = str_split($str, 8);
print_r($arr2);
?>
Résultat :
Array (
[0] => DVDMOMQ1
[1] => DVDMOMQ2
[2] => DVDMOMQ3
[3] => DVDMOMQ4 )
Merci…L’objet de mon billet était aussi de dire que sur internet bcp de gens recopiez et diffusez des scrips buggués…;-)
hello,
wordwrap() aussi également non ?
Tout à fait Aurélien ,
< ?php
$text = "DVDMOMQ1DVDMOMQ2DVDMOMQ3DVDMOMQ4";
$newtext = wordwrap($text, 8, "mettre un br ici", 1);
echo "$newtext";
?>
Résultat :
DVDMOMQ1
DVDMOMQ2
DVDMOMQ3
DVDMOMQ4