抽出する必要があるコンテンツは次のとおりです:
Weibo で URL をハイパーリンク アドレスとして自動抽出するのと同様です。つまり、コンテンツが抽出され、A タグが追加され、実際のハイパーリンクに変換されます。長い間オンラインで検索しましたが、実用的な解決策が見つかりませんでした。多くは単にURLを抽出するだけ(AタグやIMGタグ内のアドレスも抽出して置き換える)であり、上記のニーズを満たすことができません。正規表現には、抽出中に A タグを除外できるメソッドはありません。そこで私は考え方を変え、「カーブで国を救う」ことにしました。つまり、最初にすべての A タグと IMG タグを統一タグに置き換えます。次に、URL アドレスを抽出してハイパーリンクに置き換えます。最後に、統一タグを復元して以前の A タグと IMG タグに置き換えます。
//すべての IMG タグを抽出して置換します (統合タグ <{img}>)
preg_match_all('/]+>/im',$content,$imgList);
$ imgList =$imgList[0];
$str=preg_replace('/]+>/im','<{img}>',$str);
// 抽出置換標準 URL アドレス
$str=preg_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_/+.~#?&//= ] +)','$content='
http://baidu.comこれは最初の A タグです
成長の足跡 - インターネット開発に焦点を当てるこれは 2 番目の A タグです。
http://www.jb51.net これは、抽出する必要がある最初の URL アドレスです。
http://blog.baidu.com これは、抽出する必要がある 2 番目の URL アドレスです。
、これは IMG タグです';
echo linkAdd($content);
返されるコンテンツは次のとおりです:
コードをコピーします
コードは次のとおりです:
http://baidu.comこれは最初の A ですタグ、< ;a href="http://blog.baidu.com">成長の足跡 - インターネット開発に焦点を当てるこれは 2 番目の A タグです。 http://www.jb51.netこれは、抽出する必要がある最初の URL アドレスです。 a href="http://blog.baidu.com" target="_blank">http://blog.baidu.comこれは、抽出する必要がある 2 番目の URL アドレスです。
、これは IMG タグです
function replace_URLtolink($text) {
// URL のようなものを取得します...
$urls = array();
// パターンを構築します
$scheme = '(https?://|ftps? ://)?';
$www = '([w]+.)';
$ip = '(d{1,3}.d{1,3}.d{1,3}.d{ 1,3})';
$name = '([w0-9]+)';
$tld = '(w{2,4})';
$port = '(:[0-9]+ )?';
$the_rest = '(/?([w#!:.?+=&%@!-/]+))?';
$pattern = $scheme.'('.$ip.$ port.'|'.$www.$name.$tld.$port.')'.$the_rest;
$pattern = '/'.$pattern.'/is';
// URL を取得します
$ c = preg_match_all($pattern, $text, $m);
if ($c) {
$urls = $m[0];
}
// すべての URL を置き換えます
if (! empty($urls )) {
foreach ($urls as $url) {
$pos = strpos('http://', $url);
if (($pos && $pos != 0) || !$pos) {
$fullurl = 'http://'.$url;
} else {
$fullurl = $url;
}
$link = ''.$url. '';
$text = str_replace($ URL、$link、$text);
}
}
return $text;
}