如何在preg_match模式中转义斜杠字符?

时间:2014-08-12 11:46:21

标签: php regex preg-match

我有这样的文字:

line 1/1/1/2

行短语后面的文字是函数的参数,例如当我调用extractData('1/1/1/2' , 'The main text')时:

function extractData($line, $text)
{
    $pattern = "/line(\s+)$line/";
    if(preg_match($pattern, $text)) {
        // some code
    }

}

如何逃避模式中的斜线字符? 换句话说,我该如何编写模式? ($pattern = "/line(\s+)$line/";

3 个答案:

答案 0 :(得分:6)

您可以使用preg_quote功能:

$pattern = '/line(\s+)' . preg_quote($line, '/') . '/';

答案 1 :(得分:3)

\Q and \E也可用于忽略模式中的正则表达式元字符。

$pattern = '~line(\s+)\Q' . $line . '\E~';

答案 2 :(得分:1)

要使用\来搜索任何字符,为了逃避/,请使用\/

如果您想要转义\,则需要将其转义为\\\