首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从split切换到preg_split时出现php preg_split错误

从split切换到preg_split时出现php preg_split错误
EN

Stack Overflow用户
提问于 2010-02-18 19:27:20
回答 3查看 7.3K关注 0票数 5

为了与php 5.3兼容,从split改为preg_split后,我从php收到了这个警告:

代码语言:javascript
复制
PHP Warning:  preg_split(): Delimiter must not be alphanumeric or backslash

php代码是:

代码语言:javascript
复制
$statements = preg_split("\\s*;\\s*", $content);

如何修复正则表达式,使其不再使用\

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-18 19:29:16

错误是因为您的正则表达式需要一个分隔符。

代码语言:javascript
复制
$statements = preg_split("/\s*;\s*/", $content);
票数 10
EN

Stack Overflow用户

发布于 2010-02-18 19:50:00

虽然问题在两分钟后被标记为已回答,但我想为记录添加一些信息。

与用引号分隔字符串的方式类似,许多语言中的正则表达式(如Perl或JavaScript )也用正斜杠分隔。这将导致表达式如下所示:

代码语言:javascript
复制
/\s*;\s*/

此语法还允许指定修饰符:

代码语言:javascript
复制
/\s*;\s*/Ui

与Perl兼容的正则表达式(也称为preg_...函数)继承这一点。但是,PHP本身不支持这种语法,因此向preg_split()提供/\s*;\s*/会引发解析错误。相反,您可以用引号将其括起来,以构建常规字符串。

您必须考虑的另一件事是PHP允许更改分隔符。例如,您可以使用以下命令:

代码语言:javascript
复制
@\s*;\s*@Ui

它有什么好处?它简化了表达式中正斜杠的使用,因为您不需要对它们进行转义。比较:

代码语言:javascript
复制
/^\/home\/.*$/i
@^/home/.*$@i
票数 4
EN

Stack Overflow用户

发布于 2019-01-29 20:31:37

如果您不喜欢分隔符,可以使用T-Regx tool

代码语言:javascript
复制
pattern("\\s*;\\s*")->split($content):

您也可以使用Pattern::of("\\s*;\\s*")->split()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2288188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档