在从split拆分到preg_split for php 5.3兼容性之后,我从php得到了这个警告:
PHP Warning: preg_split(): Delimiter must not be alphanumeric or backslash
php代码是:
$statements = preg_split("\\s*;\\s*", $content);
如何将正则表达式修复为不再使用\
谢谢!
答案 0 :(得分:10)
错误是因为你需要在正则表达式周围加上分隔符。
$statements = preg_split("/\s*;\s*/", $content);
答案 1 :(得分:4)
虽然问题在被问到两分钟后被标记为已回答,但我想为记录添加一些信息。
与字符串用引号分隔的方式类似,许多语言中的正则表达式(如Perl或JavaScript)由正斜杠分隔。这将导致表达式如下:
/\s*;\s*/
此语法还允许指定修饰符:
/\s*;\s*/Ui
PHP的Perl兼容正则表达式(又名preg _...函数)继承了这一点。但是,PHP本身不支持此语法,因此使用/\s*;\s*/
加载preg_split()会引发解析错误。相反,您可以用引号将其括起来构建常规字符串。
您必须考虑的另一件事是PHP允许更改分隔符。例如,您可以使用:
@\s*;\s*@Ui
有什么好处?它简化了表达式 in 表达式的使用,因为你不需要转义它们。比较:
/^\/home\/.*$/i
@^/home/.*$@i
答案 2 :(得分:0)
如果您不喜欢分隔符,则可以使用T-Regx tool:
pattern("\\s*;\\s*")->split($content):
您也可以使用Pattern::of("\\s*;\\s*")->split()