2010-12-21 40 views
0

任何人都可以解釋我這個代碼拆分(「[] +」,$ s); 感謝關於PHP拆分

$s = "Split this sentence by spaces"; 
$words = split("[ ]+", $s); 
print_r($words); 

Output: 
Array 
(
    [0] => Split 
    [1] => this 
    [2] => sentence 
    [3] => by 
    [4] => spaces 
) 
+0

等待,是一個單字符類?這些來自哪裏?他們沒有絲毫的意義,但我已經看到他們兩個或三個獨自o.O – delnan 2010-12-21 17:07:03

+0

嘿,它使用正則表達式分割字符串(請注意拆分已棄用,使用preg_split或爆炸)。分割函數使用「簡單」正則表達式(但不兼容Perl兼容正則表達式)。正則表達式:[] +匹配一個或多個空格。 – 2010-12-21 17:09:47

回答

1

通過正則表達式將字符串拆分爲數組。從PHP 5.3.0開始,This function已被拒絕。依靠這個功能是非常不鼓勵的。

我reccommend '爆炸' 的功能,而不是 '拆分':

$s = "Split this sentence by spaces"; 
$words = explode(" ", $s); 
print_r($words); 

輸出:

array(5) { 
[0]=> 
string(5) "Split" 
[1]=> 
string(4) "this" 
[2]=> 
string(8) "sentence" 
[3]=> 
string(2) "by" 
[4]=> 
string(6) "spaces" 
} 
1

它分割給定字符串到由正則表達式「[] +」相匹配的一個或多個間隙的陣列。它在技術上可能只是「+」,但由於它有一個空格,所以在括號內可讀性更強。

請注意,拆分函數自版本5.3起折舊,您應該使用preg_split代替。

0

這一切都在documentation

split的第一個參數是一個正則表達式,它描述了分隔符的樣子。在你的情況下,"[ ]+"(也可以簡寫爲" +")表示「一個或多個空格」。

1
"[ ]+" 

是一個正則表達式。它會根據空格拆分字符串。

5

的第一個參數split是一個正則表達式模式,在這種情況下被有效說「匹配空格字符多次越好」。

N.B:拆分不贊成PHP 5.3的,所以我不建議使用此。

你可以精確地實現通過同樣的效果:

$words = explode(" ", $s); 

更多信息,請參見explode manual page

1

split函數也可以採用正則表達式作爲它的參數。在你的情況,你指定[ ]+這意味着:

[ ] // a character class is used with a space 
+ // find one or more instances of space 

因此,當你這樣做:

$words = split("[ ]+", $s); 

陣列中創建並存儲在$words變量與空間分隔的所有字母。

更多信息:


注意split功能已被棄用。你可以用explode這樣做同樣的事情:

$s = "Split this sentence by spaces"; 
$words = explode(' ', $s); 
print_r($words); 
0

Perl的正則表達式一個很好的資源,可以發現here