2017-04-11 35 views
0

爲什麼我們會出現上述錯誤。當我們運行下面的內碼環路運行超過500preg_replace()[function.preg-replace]:編譯失敗:偏移量爲8的不匹配圓括號

$text22 = preg_replace('/\S*\b('. $searchphrase[$rr] .')\b\S*/i', '<b><a href='.$bbb.' data-color='.$colors1[$clx].','.$colors2[$clx].','.$colors3[$clx].'>$1</a></b>', $aaa); 
+0

'$ searchphrase [$ rr]'看起來像什麼? – mazedlx

+0

@mazedlx $ searchphrase [$ rr]是在字符串中搜索的單詞$ aaa – Harinarayan

+0

$ searchpharse [$ rr]'包含括號嗎? – mazedlx

回答

1

這可能是因爲要放置到你的正則表達式的動態字符串包含特殊的正則表達式字符。字符串中的開括號會導致「不匹配的圓括號」錯誤,並且「在偏移8處」是此問題的第二個提示。你應該包裝正則表達式變量preg_quote

'/\S*\b('. preg_quote($searchphrase[$rr]) .')\b\S*/i' 
+0

它按我的意願工作。謝謝你的幫助。爲什麼有時在這個$ text22 = preg_replace('/ \ S * \ b('。preg_quote($ searchphrase [$ rr])的輸出中打印數據顏色)')\ – Harinarayan

+0

可以請你給我推薦一個解決方案, b \ S */i','$1',$ aaa);像data-color = 75,0,130> – Harinarayan

+0

我需要一套更完整的代碼和示例數據來幫助調試。我建議使用調試器逐步執行代碼。如果仍然卡住幷包含更多代碼,請打開另一個SO問題。 –

相關問題