如何在php中使用preg_match匹配特殊字符?

时间:2011-07-24 22:38:11

标签: php preg-match php-5.3

我有这个

$content1="W've have come across";
$content2="W've have come across all the oceans but still we don't find anything";

我必须删除“我们遇到过”和“任何事情”之间的内容

当content1,content2可以更改但它们可能包含撇号或特殊字符时,我应该使用哪种正则表达式?

如果您有特殊字符,如何使用preg_match?

3 个答案:

答案 0 :(得分:4)

preg_quote可以帮到你,但正如@Tomalak所说 - 你为什么不想使用str_replace或简单的东西(不是regexps)?

答案 1 :(得分:0)

我使用这样的东西:

function escape_regexp($regexp)
{
        $regex_chars = '^.[]$()|*+?{}' . "\\";
        $regexp = addcslashes($regexp, $regex_chars);

        return $regexp;
}

然后例如拨打:

preg_replace('/something' . escape_regexp($var1) . 
    'something else/', '', $string)

我没有使用preg_quote(),因为我想要通用regexp转义函数,不仅适用于PHP,还适用于mysql。我想要一个不同的角色集。我不想要特征<和>被逃脱 - 我没有找到逃脱它们的理由。

答案 2 :(得分:0)

如果没有正则表达式,我会使用它:

function weirdExtract($str, $start, $end){
    $posa = strripos($str, $start);
    $posb = strripos($str, $end);
    if($posa === false || $posb === false) return '';
    $startlen = strlen($start);
    return substr($str, $posa + $startlen, $posb - $startlen);
}

像这样使用:http://codepad.viper-7.com/BJmEGG

如果情况很重要,可以使用适当的函数更改

strripos()。