PHP: Разделить строку на массив, например, разнести без разделителя
У меня есть строка, такая как:
"0123456789"
И нужно разделить КАЖДЫЙ символ на массив.
Я, черт возьми, пытался:
explode('', '123545789');
Но это дало мне очевидное: Предупреждение: В explode не определен разделитель) ..
Как бы я с этим столкнулся? Я не вижу никакого метода под рукой, особенно просто функции
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"
Чего вы пытаетесь достичь? Вы можете получить доступ к символам в строке точно так же, как к массиву:
$s = 'abcd';
echo $s[0];
Печатает 'a'
Попробуйте это:
$str = '123456789';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
str_split
может сделать трюк. Обратите внимание, что к строкам в PHP можно получить доступ так же, как к массиву символов, в большинстве случаев вам не нужно будет разбивать вашу строку на "новый" массив.
Вот пример, который работает с многобайтовыми строками (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()
работает быстро с маленькими строками, но намного медленнее с большими.
Попробуйте это:
$str = '546788';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
Попробуйте это:
$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
)
Если вы хотите разделить строку, лучше всего использовать:
$array = str_split($string);
Если у вас есть разделитель, который разделяет строку, вы можете попробовать,
explode('' ,$string);
Где вы можете передать разделитель в первой переменной внутри разнесения, например:
explode(',',$string);
$array = str_split("$string");
На самом деле будет работать довольно хорошо, НО если вы хотите сохранить специальные символы в этой строке и хотите проделать с ними некоторые манипуляции, я бы использовал
do {
$array[] = mb_substr( $string, 0, 1, 'utf-8' );
} while ( $string = mb_substr( $string, 1, mb_strlen( $string ), 'utf-8' ) );
Потому что для некоторых моих личных целей было показано, что он более надежен, когда возникает проблема со специальными символами