0
得益於信息this post我已經成功地設法大部分的preg_replace陳述我需要更新到preg_replace_callback語句轉換後「未定義抵消」。轉換的preg_replace到preg_replace_callback
然而,當我轉換了如下聲明:
$body_highlighted = preg_replace('/((<[^>]*)|' . preg_quote(strtr($query, array('\'' => ''')), '/') . ')/ie' . ($context['utf8'] ? 'u' : ''),
"'\$2' == '\$1' ? stripslashes('\$1') : '<strong class=\"highlight\">\$1</strong>'",
$body_highlighted);
到
$body_highlighted = preg_replace_callback('/((<[^>]*)|' . preg_quote(strtr($query, array('\'' => ''')), '/') . ')/i' . ($context['utf8'] ? 'u' : ''),
function ($matches) {
return $matches[2] == $matches[1] ? stripslashes($matches[1]) : "<strong class=highlight>$matches[1]</strong>";
},
$body_highlighted);
錯誤消息'未定義抵消:2'發生(原的preg_replace語句不會產生這個錯誤)。
我花了幾個小時試圖解決這個問題,但是,因爲我從來沒有做過PHP編程,我真的不知道爲什麼它不工作或如何解決它。
我想我可能需要使用isset(),但我不知道如何/在哪裏把它放在這個聲明。 – GL700Wing
非常好 - 非常感謝! (只需改變'$ query)))'到'$ query))'來讓它工作。 – GL700Wing
@ GL700Wing:的確,我沒有看到它。 –