PHP:将字符串拆分为数组,就像没有分隔符的爆炸一样

PHP: Split string into array, like explode with no delimiter

我有一个字符串,例如:

"0123456789"

需要将每个字符分割成一个数组。

我尽力了:

1
explode('', '123545789');

但它给了我一个明显的提示:警告:explode中没有定义分隔符)。

我怎么会遇到这个?我看不到任何现成的方法,尤其是函数


1
$array = str_split("0123456789bcdfghjkmnpqrstvwxyz");

str_split采用可选的第二个参数,即块长度(默认值为1),因此您可以执行以下操作:

1
2
3
4
5
$array = str_split("aabbccdd", 2);

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

您还可以通过将字符串视为数组来获取字符串的某些部分:

1
2
3
4
$string ="hello";
echo $string[1];

// outputs"e"


你想完成什么?您可以像访问数组一样访问字符串中的字符:

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

prints 'a'


试试这个:

1
2
$str = '123456789';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);


str_split可以做到这一点。注意,PHP中的字符串可以像chars数组一样被访问,在大多数情况下,您不需要将字符串拆分为"新"数组。


下面是一个使用多字节(UTF-8)字符串的示例。

1
2
3
4
5
6
$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()运行速度几乎一样快,对于小字符串,preg_split()运行速度很快,而对于大字符串,preg_split()运行速度要慢得多。


试试这个:

1
2
    $str = '546788';
    $char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);


试试这个:

1
2
3
4
5
6
7
$str ="Hello Friend";

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

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

上面的示例将输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
)

1
$array = str_split("$string");

实际工作是否很好,但是如果您希望保留该字符串中的特殊字符,并且希望对它们进行一些操作,那么我将使用

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

因为对于我的一些个人用途,当有特殊字符的问题时,它已经被证明是更可靠的。


如果要拆分字符串,最好使用:

1
$array = str_split($string);

当有分隔符(分隔字符串)时,可以尝试,

1
explode('' ,$string);

其中,可以传递分解内第一个变量中的分隔符,例如:

1
explode(',',$string);