preg_match() 带反斜杠不能按预期工作/抛出错误
preg_match() with backslashes doesn't work as expected / throws error
我需要 preg_match()
PHP 中的模式,但无论我做什么我都会出错。
我在网上找遍了,但找不到任何可以告诉我我实际上做错了什么的东西。
这是我的 preg_match
模式:
preg_match('/\MyApp\Library\Task\/', '\MyApp\Library\Task\Db\Generate');
它总是returns一个数组,我做错了什么?我怎样才能让我的正则表达式正常工作?
我知道这听起来很疯狂,但您需要使用 4 个反斜杠才能为您的正则表达式获得 1 个反斜杠。所以你的代码看起来像这样:
preg_match('/\\MyApp\\Library\\Task\\/', '\MyApp\Library\Task\Db\Generate');
为什么要用4?因为在 PHP 中你使用反斜杠转义后面的字符,所以你转义它以获得一个文字反斜杠 (\
).
但是由于我们在正则表达式中,如果你想在你的正则表达式中使用反斜杠,你需要转义一个反斜杠,这意味着你必须使用 \
两个反斜杠,最后以 PHP在一个中转义另外两个反斜杠,它们总是以一个字符结尾,然后在您的正则表达式中以单个反斜杠结尾。
我需要 preg_match()
PHP 中的模式,但无论我做什么我都会出错。
我在网上找遍了,但找不到任何可以告诉我我实际上做错了什么的东西。
这是我的 preg_match
模式:
preg_match('/\MyApp\Library\Task\/', '\MyApp\Library\Task\Db\Generate');
它总是returns一个数组,我做错了什么?我怎样才能让我的正则表达式正常工作?
我知道这听起来很疯狂,但您需要使用 4 个反斜杠才能为您的正则表达式获得 1 个反斜杠。所以你的代码看起来像这样:
preg_match('/\\MyApp\\Library\\Task\\/', '\MyApp\Library\Task\Db\Generate');
为什么要用4?因为在 PHP 中你使用反斜杠转义后面的字符,所以你转义它以获得一个文字反斜杠 (\
).
但是由于我们在正则表达式中,如果你想在你的正则表达式中使用反斜杠,你需要转义一个反斜杠,这意味着你必须使用 \
两个反斜杠,最后以 PHP在一个中转义另外两个反斜杠,它们总是以一个字符结尾,然后在您的正则表达式中以单个反斜杠结尾。