为了与php 5.3兼容,从split改为preg_split后,我从php收到了这个警告:
PHP Warning: preg_split(): Delimiter must not be alphanumeric or backslashphp代码是:
$statements = preg_split("\\s*;\\s*", $content);如何修复正则表达式,使其不再使用\
谢谢!
发布于 2010-02-18 19:29:16
错误是因为您的正则表达式需要一个分隔符。
$statements = preg_split("/\s*;\s*/", $content);发布于 2010-02-18 19:50:00
虽然问题在两分钟后被标记为已回答,但我想为记录添加一些信息。
与用引号分隔字符串的方式类似,许多语言中的正则表达式(如Perl或JavaScript )也用正斜杠分隔。这将导致表达式如下所示:
/\s*;\s*/此语法还允许指定修饰符:
/\s*;\s*/Ui与Perl兼容的正则表达式(也称为preg_...函数)继承这一点。但是,PHP本身不支持这种语法,因此向preg_split()提供/\s*;\s*/会引发解析错误。相反,您可以用引号将其括起来,以构建常规字符串。
您必须考虑的另一件事是PHP允许更改分隔符。例如,您可以使用以下命令:
@\s*;\s*@Ui它有什么好处?它简化了表达式中正斜杠的使用,因为您不需要对它们进行转义。比较:
/^\/home\/.*$/i
@^/home/.*$@i发布于 2019-01-29 20:31:37
如果您不喜欢分隔符,可以使用T-Regx tool
pattern("\\s*;\\s*")->split($content):您也可以使用Pattern::of("\\s*;\\s*")->split()
https://stackoverflow.com/questions/2288188
复制相似问题