为了账号安全,请及时绑定邮箱和手机立即绑定

分隔符不得为字母数字或反斜杠及preg_Match。

/ 猿问

分隔符不得为字母数字或反斜杠及preg_Match。

分隔符不得为字母数字或反斜杠及preg_Match。

我有个密码:

$string1 = "My name is 'Kate' and im fine"; $pattern = "My name is '(.*)' and im fine"; 
preg_match($pattern , $string1, $matches);echo $matches[1];

当我运行时,它返回以下错误:

警告:preg_Match()[Function.preg-Match]:分隔符不能是字母数字或反斜杠


查看完整描述

3 回答

?
婷婷同学_

解决方案(其他答案没有提到-至少在我编写这篇文章时是这样)是,当PHP引用分隔符时,它不是指您在代码中看到的分隔符(它们是引号),而是指字符串中的下一个字符。(事实上,我从未在任何文档中看到过这一点:您必须在示例中看到它。)因此,与其使用像许多其他语言一样的正则表达式语法,不如:

/something/

PHP使用字符串,然后在字符串中查找另一个划界者:

'/something/'

分隔符PHP所指的是/字符,而不是一对'人物。所以如果你写'something',PHP将采取s作为指定的分隔符,并抱怨不允许使用字母数字字符作为分隔符。

因此,如果您想传递(例如)一个i为了显示您想要一个大小写-无意义的匹配,您可以在字符串中传递它,但在正则表达式分隔符之外传递它:

'/something/i'

如果你想用别的东西/作为分隔符,您可以这样做,例如,如果您正在匹配一个URL,并且不想转义所有斜杠:

'~something~'


查看完整回答
反对 回复 2019-07-04
?
泛舟湖上清波郎朗

必须为表达式指定分隔符。分隔符是在表达式的开头和结尾使用的一个特殊字符,用于表示表达式的哪个部分。这允许您使用修饰符和解释器来知道哪些是表达式,哪些是修饰符。正如错误消息所述,分隔符不能是反斜杠,因为反斜杠是转义字符。

$pattern = "/My name is '(.*)' and im fine/";

在相同的示例下面,但是使用i要匹配而不区分大小写的修饰符。

$pattern = "/My name is '(.*)' and im fine/i";

如您所见,i在斜杠之外,因此被解释为修饰符。

还请记住,如果使用正斜杠字符(/)作为分隔符,则必须避免在正则表达式中进一步使用/(如果存在的话)。


查看完整回答
反对 回复 2019-07-04
?
叮当猫咪

您需要为您的模式设置一个分隔符。应该在模式的开头和结尾添加如下:

$pattern = "/My name is '(.*)' and im fine/";  // With / as a delimeter


查看完整回答
反对 回复 2019-07-04

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信