Bien que je développe essentiellement en PHP 5, il m'arrive parfois d'avoir à travailler sur des hébergements qui sont encore en PHP 4, ce qui est parfois handicapant car des fonctions manquent.

Récemment, je me suis servi dans un script de la fonction str_split() qui permet de transformer une chaîne de caractères en un tableau. Bien entendu, je ne suis pas le seul à avoir fait cela, il y a d'autres versions sur la page officielle.

array str_split ( string string [, int split_length] ) : Convertit une chaîne de caractères en tableau. Si le paramètre optionnel split_length est spécifié, le tableau retourné sera découpé en sous-parties, chacune de taille split_length, sinon, chaque sous-partie aura la taille d'un caractère.

Cette fonction retourne FALSE si split_length est inférieur à 1. Si la longueur de split_length est supérieure à celle de string, la chaîne entière est retournée dans le premier (et seul) élément du tableau.

Fonction

<?php
if (!function_exists('str_split')) {
   /**
    * Convertit une chaine en tableau
    * Retourne false si $length est inférieur à 1, sinon un tableau
    * @param string $string Chaine à convertir
    * @param integer $length Longueur des sous-ensembles
    * @return mixed
    */
   function str_split($string, $length=1) {
      if (intval($length)<1) return false;
      if (strlen($string)<=$length) return array($string);
      $parts = array();
      while(strlen($string)>0) {
         $parts[] = substr($string, 0, $length);
         $string = substr($string, $length);
      }
      return $parts;
   }
}
?>

Utilisation

$string = 'Salut Dave';
$test = str_split($string);
print_r($test);
$test2 = str_split($string, 3);
print_r($test2);

Cet exemple va afficher:

Array (
    [0] => S
    [1] => a
    [2] => l
    [3] => u
    [4] => t
    [5] =>
    [6] => D
    [7] => a
    [8] => v
    [9] => e
)
Array(
   [0] => Sal
   [1] => ut 
   [2] => Dav
   [3] => e
)