搜索包含[with preg_replace]等字符的字符串的问题

时间:2011-02-16 20:25:24

标签: php

我正在尝试使用随机字符串并在preg_replace中使用它。当$ random接受一个包含[字符php的值返回“编译失败:缺少终止]的字符类偏移”错误时。不只是]还有其他字符导致错误。

我该如何解决这个问题?

$random='asd[qwe';

preg_replace("/$random/", "replaced value", $text, 1);

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

你必须逃脱它。您可以使用preg_quote

$random = preg_quote('asd[qwe', '/');
preg_replace("/$random/", "replaced value", $text, 1);

答案 1 :(得分:1)

某些字符需要转义。您可以设置需要转义的字符数组,也可以转义它们:

$random='asd\[qwe';

preg_replace("/$random/", "replaced value", $text, 1);

应该有效。 以下是执行此操作的数组的示例:

$random='asd[qwe(';

$escape = array('[', ']', ')', '(');
foreach ($escape as $esc) {
    $random = str_replace($esc, '\\' . $esc, $random);
}

preg_replace("/$random/", "replaced value", $text, 1);

我相信可以装扮得很漂亮,但是,是的。

删除为preg_quote肯定是更好的方法。