2011-10-31 98 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