PHP: Разделить строку на массив, например, разнести без разделителя


У меня есть строка, такая как:

"0123456789"

И нужно разделить КАЖДЫЙ символ на массив.

Я, черт возьми, пытался:

explode('', '123545789');

Но это дало мне очевидное: Предупреждение: В explode не определен разделитель) ..

Как бы я с этим столкнулся? Я не вижу никакого метода под рукой, особенно просто функции

Author: oni-kun, 2010-01-31

9 answers

$array = str_split("0123456789bcdfghjkmnpqrstvwxyz");

Str_split принимает необязательный 2-й параметр, длину блока (по умолчанию 1), поэтому вы можете делать такие вещи, как:

$array = str_split("aabbccdd", 2);

// $array[0] = aa
// $array[1] = bb
// $array[2] = cc  etc ...

Вы также можете получить доступ к частям вашей строки, обработав ее как массив:

$string = "hello";
echo $string[1];

// outputs "e"
 125
Author: Erik, 2016-10-19 00:05:36

Чего вы пытаетесь достичь? Вы можете получить доступ к символам в строке точно так же, как к массиву:

$s = 'abcd';
echo $s[0];

Печатает 'a'

 19
Author: nategood, 2015-03-07 13:32:46

Попробуйте это:

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

str_split может сделать трюк. Обратите внимание, что к строкам в PHP можно получить доступ так же, как к массиву символов, в большинстве случаев вам не нужно будет разбивать вашу строку на "новый" массив.

 5
Author: Soufiane Hassou, 2010-01-31 02:34:25

Вот пример, который работает с многобайтовыми строками (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' ) );

Это также можно сделать с помощью preg_split() ( preg_split( '//u', $str, null, PREG_SPLIT_NO_EMPTY ) ), но в отличие от приведенного выше примера, который работает почти так же быстро, независимо от размера строки, preg_split() работает быстро с маленькими строками, но намного медленнее с большими.

 4
Author: Danijel, 2015-06-05 10:59:08

Попробуйте это:

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

Попробуйте это:

$str = "Hello Friend";

$arr1 = str_split($str);
$arr2 = str_split($str, 3);

print_r($arr1);
print_r($arr2);

Приведенный выше пример выведет:

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
Author: Reza Roshan, 2015-03-07 13:16:54

Если вы хотите разделить строку, лучше всего использовать:

$array = str_split($string);

Если у вас есть разделитель, который разделяет строку, вы можете попробовать,

explode('' ,$string);

Где вы можете передать разделитель в первой переменной внутри разнесения, например:

explode(',',$string);
 0
Author: user3470929, 2015-03-07 13:18:21
$array = str_split("$string");

На самом деле будет работать довольно хорошо, НО если вы хотите сохранить специальные символы в этой строке и хотите проделать с ними некоторые манипуляции, я бы использовал

do {
    $array[] = mb_substr( $string, 0, 1, 'utf-8' );
} while ( $string = mb_substr( $string, 1, mb_strlen( $string ), 'utf-8' ) );

Потому что для некоторых моих личных целей было показано, что он более надежен, когда возникает проблема со специальными символами

 0
Author: Nedzad Ganic, 2017-02-24 19:50:05