2011-12-05 57 views
2

我碰上了下面的字符串分割爲「標記」:請解釋這個正則表達式來我

$tokens = preg_split("/[^\-_A-Za-z0-9]+/", $string); 

有人能向我解釋這是怎麼與此不同:

$tokens = explode(' ', $string); 

任何幫助將不勝感激:-)

回答

5

您提供的正則表達式:

$tokens = preg_split("/[^\-_A-Za-z0-9]+/", $string); 

將使用非破折號( - ),下劃線(_),字母(小寫或大寫)或數字的分隔符將輸入字符串拆分爲令牌。

鑑於:

$tokens = explode(' ', $string); 

只會把串入使用空格作爲分隔符標記。

2

[^\-_A-Za-z0-9]+的字面理解是:

匹配一個或多個字符induvidual是不-_或一個字母A到Z(大寫與否)或數字。

preg_split將根據上面的匹配拆分輸入,但explode只會在空白字面上拆分。還有其他字符不會從正則表達式中排除,其中preg_split將分裂,但explode不會,因此得到的數組可能會不同。

+0

\不是將在比賽中使用的字符之一。它在那裏是爲了逃避 - 角色。 –

+0

@RyanBerger啊是的,當然。編輯。 –