我收到格式爲html的文本。我想限制錨標記的網址只能從我的網域中用「xxx」(或其他)替換舊鏈接。
輸入:「<a href='otherdomain'>text</a>
」
輸出:「XXX」
我使用正則表達式來實現這一點,雖然我那種堅持在這裏:正則表達式刪除指向另一個域的鏈接
$pattern ='/<a.*href=[\'|\"]http.?:\/\/[^mydomain.*\"\']*[\'|\"].*<\/a>/i';
$replace ='xxx';
echo preg_replace($pattern, $replace, $string);
這裏有什麼問題?
如果是用戶輸入你想清理,那麼你也將不得不處理缺少的屬性引號或HTML實體僞裝。正則表達式因此只會捕獲常見的情況;它不適合作爲可靠的過濾器。 (沒有過多的努力) – mario 2012-02-12 12:11:43
[如何解析和處理HTML與PHP?]可能的重複(http://stackoverflow.com/questions/3577641/how-to-parse-and-process-html-with- php) – Gordon 2012-02-12 12:12:50
@ Gordon:我認爲解析它並不容易,因爲我收到標記作爲已通過篩選的字符串的一部分 – lvil 2012-02-12 12:18:57