我需要preg_match()
PHP中的模式,无论我做什么,都会出错。
我在网上看了一遍,找不到任何告诉我实际上做错的事情。
这是我的preg_match
模式:
preg_match('/\MyApp\Library\Task\/', '\MyApp\Library\Task\Db\Generate');
它总是返回一个数组,我该怎么办?如何让我的正则表达式正常工作?
答案 0 :(得分:9)
我知道这听起来很疯狂,但你需要使用4个反斜杠为你的正则表达式获得1个反斜杠。所以你的代码看起来像这样:
preg_match('/\\\\MyApp\\\\Library\\\\Task\\\\/', '\MyApp\Library\Task\Db\Generate');
为什么需要使用4?因为在PHP中,您使用反斜杠来转义后续字符,因此您将其转义为获得一个文字反斜杠(\\
)。
但是因为我们处于正则表达式中,所以如果你想在你的正则表达式中使用反斜杠,你需要使用反斜杠,这意味着你必须使用\\
两个反斜杠,这些反斜杠与PHP结合在一起以逃避另一个两个反斜杠总是以一个字符结尾,然后在你的正则表达式中以一个反斜杠结束。