PHP: scinde une chaîne en un tableau, comme exploser avec pas de délimiteur
j'ai une chaîne comme:
"0123456789"
et besoin de diviser chaque caractère en un tableau.
, j'ai pour l'enfer de lui essayé:
explode('', '123545789');
mais il m'a donné l'évidence: avertissement: Aucun délimiteur défini dans explode) ..
comment l'aurais-je découvert? Je ne peux pas voir aucune méthode hors de la main, surtout juste un fonction
9 réponses
$array = str_split("0123456789bcdfghjkmnpqrstvwxyz");
str_split prend un 2ème param optionnel, La longueur du morceau (par défaut 1), de sorte que vous pouvez faire des choses comme:
$array = str_split("aabbccdd", 2);
// $array[0] = aa
// $array[1] = bb
// $array[2] = cc etc ...
vous pouvez aussi obtenir des parties de votre chaîne en la traitant comme un tableau:
$string = "hello";
echo $string[1];
// outputs "e"
Qu'essayez-vous d'accomplir? Vous pouvez accéder aux caractères d'une chaîne de caractères comme un tableau:
$s = 'abcd';
echo $s[0];
prints " un '
essayez ceci:
$str = '123456789';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
str_split
peut faire l'affaire. Notez que les chaînes de caractères en PHP peuvent être consultées comme un tableau de caractères, dans la plupart des cas, vous n'aurez pas besoin de diviser votre chaîne de caractères en un "nouveau" tableau.
voici un exemple qui fonctionne avec des chaînes multibytes ( 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 aussi être fait avec preg_split()
( preg_split( '//u', $str, null, PREG_SPLIT_NO_EMPTY )
), mais contrairement à l'exemple ci-dessus, qui s'exécute presque aussi vite quelle que soit la taille de la corde, preg_split()
est rapide avec de petites cordes, mais beaucoup plus lent avec de grandes.
essayez ceci:
$str = '546788';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
essayez ceci:
$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
)
Si vous voulez diviser la chaîne, il est préférable d'utiliser:
$array = str_split($string);
quand 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 comme:
explode(',',$string);
$array = str_split("$string");
va en fait fonctionner assez bien, mais si vous voulez préserver les caractères spéciaux dans cette chaîne, et vous voulez faire quelque manipulation avec eux, que je voudrais utiliser
do {
$array[] = mb_substr( $string, 0, 1, 'utf-8' );
} while ( $string = mb_substr( $string, 1, mb_strlen( $string ), 'utf-8' ) );
parce que pour certaines de mes utilisations personnelles, il s'est avéré plus fiable quand il y a un problème avec des caractères spéciaux