2011-02-16 135 views
0

我想要採取一個隨機字符串並在preg_replace中使用它。當$ random接受一個包含[字符php返回「編譯失敗:缺少終止」的字符類的偏移量爲「錯誤」的值時。不只是]還有其他角色會導致錯誤。搜索包含字符的字符串問題[preg_replace

我該如何解決這個問題?

$random='asd[qwe'; 

preg_replace("/$random/", "replaced value", $text, 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肯定是更好的方法。

3

你必須逃避它。你可以用preg_quote

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

不錯,你每天都會學到新的東西! +1。 – 2011-02-16 20:30:17

相關問題