我正在阅读的一本书有这段代码,但无法理解为什么preg_match
中有这么多反斜杠。第一个\可能意味着匹配文字反斜杠,但为什么在表达式中还有两个?
这是使用自动加载“提供名称空间支持”的代码:
// listing 05.18
$namespaces = function ($path) {
if (preg_match('/\\\\/', $path)) {
$path = str_replace('\\', DIRECTORY_SEPARATOR, $path);
}
if (file_exists("{$path}.php")) {
require_once("{$path}.php");
}
};
\spl_autoload_register($namespaces);
$obj = new util\LocalPath();
$obj->wave();
答案 0 :(得分:0)
PHP(与许多语言一样)需要使用反斜杠转义反斜杠。正则表达式还要求使用反斜杠转义反斜杠。因此,要匹配单个文字反斜杠,在正则表达式字符串中,必须使用\\\\
:PHP将字符串转换为两个转义反斜杠,正则表达式解析器将其视为一个转义反斜杠。
答案 1 :(得分:0)
\
/\\/
'/\\\\/'
。