我正在尝试使用随机字符串并在preg_replace中使用它。当$ random接受一个包含[字符php的值返回“编译失败:缺少终止]的字符类偏移”错误时。不只是]还有其他字符导致错误。
我该如何解决这个问题?
$random='asd[qwe';
preg_replace("/$random/", "replaced value", $text, 1);
有什么想法吗?
答案 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
肯定是更好的方法。