PHP: разделить строку на массив, например, взорвать без разделителя
У меня есть строка, например:
"0123456789"
и нужно разделить каждый символ в массив.
Я так пробовал:
explode('', '123545789');
но это дало мне очевидное: предупреждение: нет разделителя, определенного в explode) ..
Как бы я столкнулся с этим? Я не вижу никакого метода от руки, особенно просто функцию
9 ответов:
$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_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 = "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' ) );потому что для некоторых моих личных целей было показано, что он более надежен, когда есть проблема со специальными символами
Comments