Tronçonner des chaînes
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
14 septembre 2007 à 22:35
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
15 septembre 2007 à 0:07
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…;-)
15 septembre 2007 à 11:22
hello,
wordwrap() aussi également non ?
15 septembre 2007 à 21:15
Tout à fait Aurélien ,
< ?php
$text = "DVDMOMQ1DVDMOMQ2DVDMOMQ3DVDMOMQ4";
$newtext = wordwrap($text, 8, "mettre un br ici", 1);
echo "$newtext";
?>
Résultat :
DVDMOMQ1
DVDMOMQ2
DVDMOMQ3
DVDMOMQ4