我正在尝试匹配008 /
preg_match('/008\\//i', '008/', $matches);
preg_match('/008\//i', '008/', $matches);
我的问题是为什么两个正则表达式都有效。我希望第二个工作,但为什么双反斜杠工作?
答案 0 :(得分:5)
因为PHP字符串中的ToObject
意味着“转义反斜杠”。由于Object.prototype.valueOf()
并不意味着它不需要被转义(即使它是可能的),所以它们评估为相同。
换句话说,这两个都会打印相同的东西:
\\
反斜杠为one of the few characters that can get escaped in a single quoted string(除了显而易见的\/
),这可确保您可以创建echo '/008\\//i'; // prints /008\//i
echo '/008\//i'; // prints /008\//i
之类的字符串,而无需转义上一个引号。