正则表达式 - 反斜杠不能在字符类中转义,为什么?

时间:2016-02-29 12:22:34

标签: php regex escaping backslash character-class

我有一个简短而简单的PHP脚本,我希望在其中查找字符串中每个系列的两个或更多反斜杠,并用一个反斜杠替换它:

<?php
    $link = 'www\\root\\\\test\\';
    echo preg_replace('/[\\]{2,}/', '\\', $link);
?>

所以我猜我实际上已经正确地转义了所有反斜杠,但是当我运行代码时,它会给我一个错误,指出无法找到终止]括号。所以在我看来,这个是逃脱而不是反斜杠,这让我感到困惑。在字符类中转义反斜杠实际上是采用不同的方法吗?

1 个答案:

答案 0 :(得分:0)

好吧,好吧,我自己也找到了答案:

preg_replace('/[\\\\]{2,}/', '\\', $link);

我需要对它进行双重转义,因为PHP首先需要自行转义它。