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

4 réponses à “Tronçonner des chaînes”

  1. MS-DOS_1991 dit :

    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

  2. Frédéric Quié dit :

    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…;-)

  3. Aurélien dit :

    hello,

    wordwrap() aussi également non ?

  4. Frédéric Quié dit :

    Tout à fait Aurélien ,

    < ?php
    $text = "DVDMOMQ1DVDMOMQ2DVDMOMQ3DVDMOMQ4";
    $newtext = wordwrap($text, 8, "mettre un br ici", 1);
    echo "$newtext";
    ?>

    Résultat :

    DVDMOMQ1
    DVDMOMQ2
    DVDMOMQ3
    DVDMOMQ4

Laisser un commentaire