2011-12-08 101 views
1
$remarks = preg_replace('/'.$searchText.'/i', '<span class="searchText">$0</span>', $remarks); 

我使用上面的代碼行來突出顯示用戶輸入的搜索文本。它的工作時間爲99%,除非搜索字符串恰好包含正斜槓(/)字符。當他們這樣做,PHP返回一個「未知修飾符」錯誤。我嘗試在preg_replace行之前添加這行代碼,以反斜槓字符轉義正斜槓。php preg_replace用斜槓字符

$searchText = str_replace('/', '\/', $searchText); 

這似乎沒有幫助。我如何完成這項工作?

+0

你使用任何理由'str_replace',而不是'preg_replace'在附加線,以消除任何額外的斜線?隨着額外的線路,你有沒有嘗試更換/而不是逃避它? – Ryan

+0

[preg_replace錯誤]可能的重複(http://stackoverflow.com/questions/4712444/preg-replace-error) – mario

+0

我用str_replace代替preg_replace,因爲我不認爲我需要preg_replace的額外功能。如果我用/替換/,則不會突出顯示正確的文本。 – user39653

回答

2

這就是preg_quote是:

$searchText = preg_quote($searchText, '/'); 
preg_replace("/$searchText/i", ...) 
+0

添加該行後,我收到「編譯失敗:正常表達式在偏移量0時太大」錯誤。 – user39653

+0

非常感謝。這就是訣竅! ☺Danke dir! – Pathros