任何人都可以解釋我這個代碼拆分(「[] +」,$ 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
)
任何人都可以解釋我這個代碼拆分(「[] +」,$ 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
)
通過正則表達式將字符串拆分爲數組。從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"
}
它分割給定字符串到由正則表達式「[] +」相匹配的一個或多個間隙的陣列。它在技術上可能只是「+」,但由於它有一個空格,所以在括號內可讀性更強。
請注意,拆分函數自版本5.3起折舊,您應該使用preg_split代替。
這一切都在documentation。
split
的第一個參數是一個正則表達式,它描述了分隔符的樣子。在你的情況下,"[ ]+"
(也可以簡寫爲" +"
)表示「一個或多個空格」。
"[ ]+"
是一個正則表達式。它會根據空格拆分字符串。
的第一個參數split是一個正則表達式模式,在這種情況下被有效說「匹配空格字符多次越好」。
N.B:拆分不贊成PHP 5.3的,所以我不建議使用此。
你可以精確地實現通過同樣的效果:
$words = explode(" ", $s);
更多信息,請參見explode manual page。
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);
Perl的正則表達式一個很好的資源,可以發現here。
等待,是一個單字符類?這些來自哪裏?他們沒有絲毫的意義,但我已經看到他們兩個或三個獨自o.O – delnan 2010-12-21 17:07:03
嘿,它使用正則表達式分割字符串(請注意拆分已棄用,使用preg_split或爆炸)。分割函數使用「簡單」正則表達式(但不兼容Perl兼容正則表達式)。正則表達式:[] +匹配一個或多個空格。 – 2010-12-21 17:09:47