Php 带反斜杠的preg_match()无法按预期工作/引发错误
我需要在PHP中预先匹配一个模式,无论我做什么,我都会得到错误 我在网上到处找,找不到任何能说明我到底做错了什么的东西 以下是我的赛前模式:Php 带反斜杠的preg_match()无法按预期工作/引发错误,php,regex,string,preg-match,Php,Regex,String,Preg Match,我需要在PHP中预先匹配一个模式,无论我做什么,我都会得到错误 我在网上到处找,找不到任何能说明我到底做错了什么的东西 以下是我的赛前模式: 它总是返回一个数组,我做错了什么?如何使正则表达式正常工作?我知道这听起来很疯狂,但您需要使用4个反斜杠才能为正则表达式获得1个反斜杠。因此,您的代码如下所示: preg_match('/\\\\MyApp\\\\Library\\\\Task\\\\/', '\MyApp\Library\Task\Db\Generate'); 为什么需要使用4?因为在
它总是返回一个数组,我做错了什么?如何使正则表达式正常工作?我知道这听起来很疯狂,但您需要使用4个反斜杠才能为正则表达式获得1个反斜杠。因此,您的代码如下所示:
preg_match('/\\\\MyApp\\\\Library\\\\Task\\\\/', '\MyApp\Library\Task\Db\Generate');
为什么需要使用4?因为在PHP中,使用反斜杠转义以下字符,所以转义后得到一个文字反斜杠\\
但是,由于我们是在正则表达式中,如果你想在正则表达式中使用反斜杠,你需要对反斜杠进行转义,这意味着你必须使用\\两个反斜杠,在PHP中,它们最终变成一个字符,然后在正则表达式中变成一个反斜杠。我知道这听起来很疯狂,但是您需要使用4个反斜杠才能为正则表达式获得1个反斜杠。因此,您的代码如下所示:
preg_match('/\\\\MyApp\\\\Library\\\\Task\\\\/', '\MyApp\Library\Task\Db\Generate');
为什么需要使用4?因为在PHP中,使用反斜杠转义以下字符,所以转义后得到一个文字反斜杠\\
但是,由于我们是在正则表达式中,如果您想在正则表达式中使用反斜杠,则需要对反斜杠进行转义,这意味着您必须使用\\两个反斜杠,这两个反斜杠在PHP中以一个字符结尾,以转义另外两个反斜杠,这两个反斜杠总是以一个字符结尾,然后在正则表达式中变成一个反斜杠。您不应该在正则表达式中避开反斜杠吗?这里已经提到了这个问题:您不应该避开正则表达式中的反斜杠吗?这里提到了这个问题: