分隔符不得为字母数字或反斜杠及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]:分隔符不能是字母数字或反斜杠


一只萌萌小番薯
浏览 799回答 3
3回答

叮当猫咪

您需要为您的模式设置一个分隔符。应该在模式的开头和结尾添加如下:$pattern = "/My name is '(.*)' and im fine/";  // With / as a delimeter

婷婷同学_

解决方案(其他答案没有提到-至少在我编写这篇文章时是这样)是,当PHP引用分隔符时,它不是指您在代码中看到的分隔符(它们是引号),而是指字符串中的下一个字符。(事实上,我从未在任何文档中看到过这一点:您必须在示例中看到它。)因此,与其使用像许多其他语言一样的正则表达式语法,不如:/something/PHP使用字符串,然后在字符串中查找另一个划界者:'/something/'分隔符PHP所指的是/字符,而不是一对'人物。所以如果你写'something',PHP将采取s作为指定的分隔符,并抱怨不允许使用字母数字字符作为分隔符。因此,如果您想传递(例如)一个i为了显示您想要一个大小写-无意义的匹配,您可以在字符串中传递它,但在正则表达式分隔符之外传递它:'/something/i'如果你想用别的东西/作为分隔符,您可以这样做,例如,如果您正在匹配一个URL,并且不想转义所有斜杠:'~something~'

泛舟湖上清波郎朗

必须为表达式指定分隔符。分隔符是在表达式的开头和结尾使用的一个特殊字符,用于表示表达式的哪个部分。这允许您使用修饰符和解释器来知道哪些是表达式,哪些是修饰符。正如错误消息所述,分隔符不能是反斜杠,因为反斜杠是转义字符。$pattern = "/My name is '(.*)' and im fine/";在相同的示例下面,但是使用i要匹配而不区分大小写的修饰符。$pattern = "/My name is '(.*)' and im fine/i";如您所见,i在斜杠之外,因此被解释为修饰符。还请记住,如果使用正斜杠字符(/)作为分隔符,则必须避免在正则表达式中进一步使用/(如果存在的话)。
打开App,查看更多内容
随时随地看视频慕课网APP