我有一个字符串,例如:
“ 0123456789”
并且需要将每个EACH字符拆分为一个数组。
我为它的地狱尝试:
explode('', '123545789');
但这给了我显而易见的警告:警告:爆炸中未定义分隔符。
我怎么会遇到这个?我看不到任何可用的方法,尤其是一个函数
Answers:
$array = str_split("0123456789bcdfghjkmnpqrstvwxyz");
str_split采用可选的第二个参数,即块长度(默认为1),因此您可以执行以下操作:
$array = str_split("aabbccdd", 2);
// $array[0] = aa
// $array[1] = bb
// $array[2] = cc etc ...
您还可以通过将字符串视为数组来获得字符串的一部分:
$string = "hello";
echo $string[1];
// outputs "e"
尝试这个:
$str = '123456789';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
$str
它没有长度,则不需要。
$str
和一组$char_array = array()
,如果strlen
返回0
str_split
可以解决问题。请注意,PHP中的字符串可以像chars数组一样进行访问,在大多数情况下,您无需将字符串拆分为“新”数组。
这是一个使用多字节(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");
实际上会很好地工作,但是,如果您想保留该字符串中的特殊字符,并且想要对其进行一些操作,我会使用
do {
$array[] = mb_substr( $string, 0, 1, 'utf-8' );
} while ( $string = mb_substr( $string, 1, mb_strlen( $string ), 'utf-8' ) );
因为对于我个人的某些用途,当出现特殊字符问题时,它被证明更可靠