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

67
demandé sur oni-kun 2010-01-31 05:29:30

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"
125
répondu Erik 2016-10-19 00:05:36

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 '

19
répondu nategood 2015-03-07 13:32:46

essayez ceci:

$str = '123456789';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
6
répondu Conan 2015-03-07 13:32:18

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.

5
répondu Soufiane Hassou 2010-01-31 02:34:25

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.

4
répondu Danijel 2015-06-05 10:59:08

essayez ceci:

    $str = '546788';
    $char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
2
répondu Rekha 2015-03-07 13:09:19

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
)
2
répondu Reza Roshan 2015-03-07 13:16:54

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);
0
répondu user3470929 2015-03-07 13:18:21
$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

0
répondu Nedzad Ganic 2017-02-24 19:50:05