J'ai une chaîne telle que:
"0123456789"
et besoin de diviser CHAQUE caractère dans un tableau.
J'ai pour l'enfer essayé:
explode('', '123545789');
Mais cela m’a apporté une évidence: Attention: pas de délimiteur défini dans exploser) ..
Comment pourrais-je trouver cela? Je ne vois aucune méthode, surtout une fonction
$array = str_split("0123456789bcdfghjkmnpqrstvwxyz");
str_split prend un second paramètre facultatif, la longueur du bloc (par défaut 1), afin que vous puissiez effectuer les opérations suivantes:
$array = str_split("aabbccdd", 2);
// $array[0] = aa
// $array[1] = bb
// $array[2] = cc etc ...
Vous pouvez également accéder à certaines parties de votre chaîne en la traitant comme un tableau:
$string = "hello";
echo $string[1];
// outputs "e"
Qu'est-ce que vous essayez d'accomplir? Vous pouvez accéder aux caractères d'une chaîne comme un tableau:
$s = 'abcd';
echo $s[0];
impressions ' a '
Essaye ça:
$str = '123456789';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
str_split
peut faire l'affaire. Notez que les chaînes dans PHP peuvent être accédées comme un tableau de caractères, dans la plupart des cas, vous n'avez pas besoin de scinder votre chaîne en un "nouveau" tableau.
Voici un exemple fonctionnant avec des chaînes multi-octets (UTF-8).
$str = 'äbcd';
// PHP 5.4.8 allows null as the third argument of mb_strpos() function
do {
$arr[] = mb_substr( $str, 0, 1, 'utf-8' );
} while ( $str = mb_substr( $str, 1, mb_strlen( $str ), 'utf-8' ) );
Cela peut également être fait avec preg_split()
(preg_split( '//u', $str, null, PREG_SPLIT_NO_EMPTY )
), mais contrairement à l'exemple ci-dessus, cela tourne presque aussi vite quelle que soit la taille de la chaîne, preg_split()
est rapide avec petites cordes, mais beaucoup plus lente avec les grandes.
Essaye ça:
$str = "Hello Friend";
$arr1 = str_split($str);
$arr2 = str_split($str, 3);
print_r($arr1);
print_r($arr2);
L'exemple ci-dessus affichera:
Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
[5] =>
[6] => F
[7] => r
[8] => i
[9] => e
[10] => n
[11] => d
)
Array
(
[0] => Hel
[1] => lo
[2] => Fri
[3] => end
)
Essaye ça:
$str = '546788';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
$array = str_split("$string");
cela fonctionnera plutôt bien, MAIS si vous voulez conserver les caractères spéciaux de cette chaîne et que vous voulez les manipuler, MERCI de les utiliser.
do {
$array[] = mb_substr( $string, 0, 1, 'utf-8' );
} while ( $string = mb_substr( $string, 1, mb_strlen( $string ), 'utf-8' ) );
parce que pour certains de mes usages personnels, il s'est avéré plus fiable lorsqu'il existe un problème avec les caractères spéciaux
Si vous voulez diviser la chaîne, utilisez de préférence:
$array = str_split($string);
Lorsque vous avez le délimiteur, qui sépare la chaîne, vous pouvez essayer,
explode('' ,$string);
Où vous pouvez passer le délimiteur dans la première variable à l'intérieur de l'exploser, tel que:
explode(',',$string);