2011-10-31 97 views
1

我正在嘗試編寫一個正則表達式,可以將字符串拆分爲令牌。這曾經工作:preg_split將字符串轉換爲令牌

$rawtokens = split("[^-_A-Za-z0-9]+", $string); 

但現在拆分()已被棄用(和使用使preg_split建議),這不起作用:

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

我得到的錯誤是+ \是一個未知的修飾詞。從split到preg_split的遷移有什麼變化?

+4

[轉換額日格則表達式來浸漬料(的可能重複http://stackoverflow.com/questions-6270004 /轉換-ereg-expressions-to-preg) – mario

回答

2

你需要delimiters爲PCRE正則表達式:

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

嘗試逃離-並添加分隔符:

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

在字符類的開頭或結尾處不需要轉義'-'字符,因爲在這些位置它的含義是明確的 – meouw

+0

@meou w:開發良好的正則表達習慣是很好的。 – Ryan

+0

你建議逃避作爲你的答案的一部分 - 轉義無關這裏 – meouw