我現在有一個循環下面的代碼:正則表達式的幫助生成鏈接
$message = preg_replace("/({$data[0]})/i","<a href=\"{$data[1]}\" class=\"postlink\">$1</a>",$message,1);
這個循環的關鍵是尋找特定關鍵字($數據[0]),並把它們變成鏈接$ data [1]中的URL。我也使用的1
該工程確定,在一定程度上的限制。不過,我正在嘗試改進此正則表達式,以防止以下問題出現:
- 如果URL實際上包含標記的關鍵字,則會導致事情混亂。例如,如果「測試」是一個關鍵字,並且該頁面鏈接到像「http://www.site.com/test.html」這樣的URL,那麼它將替換「test.html」,這是錯誤的。它應該忽略它。
- 如果文本中包含類似
<a href="blabla">this is a test</a>
,我不想關鍵字「test」將被替換,因爲它已經是一個鏈接的一部分。
這些是我迄今爲止發現的兩個主要問題,可能還有更多。我正在尋求幫助,撰寫更好的正則表達式來避免這些問題。
謝謝
對於第一個問題,探測周圍的空白。上下文敏感的正則表達式匹配有點複雜;所以對於後一個問題,使用第二個preg_replace_callback來過濾這些情況可能是有意義的。 – mario