2010-04-22 37 views
1

返回空串現在,我試圖讓這個:從使preg_split

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

回答

1

如何:

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

將拆分正則表達式是抓住所有的逗號,而不僅僅是一個。

+0

@Mike多數民衆贊成我是一個正規的貨運教徒。大聲笑! – Gutzofter 2010-04-22 20:50:28

+0

; o)在另一個說明中,Gumbo在下面的答案中指出爆炸點很重要:不需要爲此使用正則表達式。 – 2010-04-22 21:59:45

5

[,]+意味着一個或多個逗號字符,而儘可能多地匹配。只使用/,/和它的作品:

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

但是,你甚至都不需要正則表達式:

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

+1爆炸()應優於使preg_split(),再加上它不依靠PCRE – Cez 2010-04-22 21:47:34

+0

提前優化。我已經在我的代碼中使用了preg_。我的一點貨物邪教。 – Gutzofter 2010-04-29 20:35:17

0

你的模式使用逗號作爲分隔符來分割文本(它的語法也不完美,因爲你無緣無故地使用了一個字符類),所以兩個(或兩百個)逗號就像一個。

無論如何,因爲你只是用文字字符作爲分隔符,使用explode()

$str = 'hello,,goodbye'; 

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

輸出:

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