次の正規表現を使用して、URL を href リンクに変換しています。それはうまく機能しますが、背景画像を持つスタイルタグを使用するとバグが見つかりました.
/**
* Convert urls in a string to a html link
* @return string
*/
public static function ConvertUrlsToHtml($str)
{
$str = preg_replace( '@(?<![.*">])\b(?:(?:https?|ftp|file)://|[a-z]\.)[-A-Z0-9+&#/%=~_|$?!:,.]*[A-Z0-9+&#/%=~_|$]@i', '<a href="\0">\0</a>', $str);
return $str;
}
次を使用すると...
<div class="inner-left" style="background-image: url(http://www.somewebsite/background.jpg);"></div>
背景画像もhrefに変換します。
スタイルタグを無視するように正規表現を微調整する方法を知っている人はいますか?