我有这个
$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?
答案 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()。