preg_replace转义斜杠

时间:2011-01-15 11:29:38

标签: php regex

当模式包含斜杠

时,我收到未知修饰符错误

代码:

preg_replace('/$v/', $replacement, $string)


var $ v,有时目录路径。

$v = folder/folder/file.ext



如何在preg_replace中处理$ v?

3 个答案:

答案 0 :(得分:4)

回到原来的答案,因为结果发挥了作用,dany接受了我的回答。

使用preg_quote()将其转义,并在将其放入字符串时使用双引号:

$v = preg_quote($v, '/');
echo preg_replace("/$v/", $replacement, $string);

如果您的$v没有任何正则表达式元字符,并且您只想进行完全匹配,请再次使用str_replace()

echo str_replace($v, $replacement, $string);

答案 1 :(得分:2)

现有的答案都不是绝对正确的。

使用preg_replace()转义PREG符号的正确方法如下:

$delim = '~';
$search = preg_quote('folder/folder/file.ext', $delim);
$replace = addcslashes($replace, '\\$');
//$replace = preg_quote($replace); // don't use $delim here!

$string = preg_replace($delim . $search . $delim, $replace, $string);

$replace也需要进行转义,否则$0会返回匹配的字符串。

答案 2 :(得分:0)

转义字符串以在正则表达式中使用的正确方法是preg_quote()

$v = preg_quote($v, '/');
preg_replace('/$v/', $replacement, $string)

注意,不仅分隔符/被转义,而且还有所有其他正则表达式元字符,如点或大括号或其他转义序列。