我只是想知道如何解决这个问题。
我有这段代码
<?php
$test = "\u0000hi";
preg_match("|\\\\u0000|", $test, $a);
print_r($a);
?>
在上述情况下,它的工作原理。但是,我不知道为什么要使用太多的转义字符?
以下案例
<?php
$test = "\\u0000hi";
preg_match("|\\\\\\\\u0000|", $test, $a);
print_r($a);
?>
我在\
中有8个转义字符preg_match
,在$test
变量中有两个转义字符(与前一个示例中的重复计算)
有人可以解释一下这个问题吗?
答案 0 :(得分:1)
两个$test
字符串表示法在内部评估为相同的字符串。亲自尝试一下:
var_dump("\u0000hi");
// Outputs string(8) "\u0000hi"
var_dump("\\u0000hi");
//Outputs string(8) "\u0000hi"
相同的原始字符串,因此您需要相同的正则表达式来匹配它。这是其中有四个\
的那个。
答案 1 :(得分:1)
如果你想找到一个反斜杠'\u'
你需要在你的正则表达式'/\\u/'
如果你把你的正则表达式放在双引号中你需要转义两个反斜杠b / c否则它们被评估为你的字符串中的一个反斜杠,然后作为你的正则表达式中的元字符:
"/\\\\u/"
在顶部我写了'\ u'而不是“\ u”就像在你的情况下,b / c实际上如果\ u是“\ u”中的控件字符,那么你无论如何也找不到任何反斜杠。 / p>