单引号不会对其中的内容做转义处理
var_dump(preg_match('/\a/', '\a', $matches)); // int(0)
var_dump($matches); // array()
// Pattern ======= 正则引擎收到的输入
// \a ------- \a
var_dump(preg_match('/\a/', "\07", $matches)); // int(1)
var_dump($matches); // array('[响铃字符]')
// Pattern ======= 正则引擎收到的输入
// \a ------- \a
var_dump(preg_match('/\\\a/', '\a', $matches)); // int(1)
var_dump($matches); // array('\a')
// Pattern ======= 正则引擎收到的输入
// \\\a ------- \\a
var_dump(preg_match('/\\a/', 'a', $matches)); // int(0)
var_dump($matches); // array()
// Pattern ======= 正则引擎收到的输入
// \a ------- \a
var_dump(preg_match('/\\a/', "\07", $matches)); // int(1)
var_dump($matches); // array('[响铃字符]')
// Pattern ======= 正则引擎收到的输入
// \a ------- \a
var_dump(preg_match('/\\\\a/', '\a', $matches)); // int(1)
var_dump($matches); // array('\a')
// Pattern ======= 正则引擎收到的输入
// \\\\a ------- \\a
var_dump(preg_match('/\a/', '\a', $matches)); // int(0)
var_dump($matches); // array()
// Pattern ======= 正则引擎收到的输入
// \a ------- \a
总结(单引号)
对于单引号内的单个\并不会转义之后的字符(\\除外)
为什么'/\a/'匹配不到字符\a, 因为正则引擎收到\a被转换成了\07的鸣笛字符 Escape sequences