从preg_split返回空字符串

时间:2010-04-22 20:34:17

标签: php regex string

现在我正试着这个:

Array
(
    [0] => hello
    [1] => 
    [2] => goodbye
)

索引1是空字符串。

$toBeSplit= 'hello,,goodbye';

$textSplitted = preg_split('/[,]+/', $toBeSplit, -1);

$textSplitted看起来像这样:

Array
(
    [0] => hello
    [1] => goodbye
)

我正在使用PHP 5.3.2

3 个答案:

答案 0 :(得分:5)

[,]+表示一个或多个逗号字符,但尽可能匹配。仅使用/,/,它可以正常运行:

$textSplitted = preg_split('/,/', $toBeSplit, -1);

但你甚至不需要正则表达式:

$textSplitted = explode(',', $toBeSplit);

答案 1 :(得分:1)

这个怎么样:

$textSplitted = preg_split('/,/', $toBeSplit, -1);

你的分裂正则表达式抓住了所有逗号,而不只是一个。

答案 2 :(得分:0)

你的模式使用一系列逗号分隔文本作为分隔符(它的语法也不完美,因为你无缘无故地使用了一个字符类),所以两个(或两百个)逗号就算一个。

无论如何,由于您只是使用文字字符作为分隔符,请使用explode()

$str = 'hello,,goodbye';

print_r(explode(',', $str));

输出:

Array
(
    [0] => hello
    [1] => 
    [2] => goodbye
)