我想要採取一個隨機字符串並在preg_replace中使用它。當$ random接受一個包含[字符php返回「編譯失敗:缺少終止」的字符類的偏移量爲「錯誤」的值時。不只是]還有其他角色會導致錯誤。搜索包含字符的字符串問題[preg_replace
我該如何解決這個問題?
$random='asd[qwe';
preg_replace("/$random/", "replaced value", $text, 1);
任何想法?
我想要採取一個隨機字符串並在preg_replace中使用它。當$ random接受一個包含[字符php返回「編譯失敗:缺少終止」的字符類的偏移量爲「錯誤」的值時。不只是]還有其他角色會導致錯誤。搜索包含字符的字符串問題[preg_replace
我該如何解決這個問題?
$random='asd[qwe';
preg_replace("/$random/", "replaced value", $text, 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
肯定是更好的方法。
你必須逃避它。你可以用preg_quote:
$random = preg_quote('asd[qwe', '/');
preg_replace("/$random/", "replaced value", $text, 1);
不錯,你每天都會學到新的東西! +1。 – 2011-02-16 20:30:17