ホームページ  >  記事  >  バックエンド開発  >  PHP は URL アドレスを完全な a タグリンクコードに変換します (php は URL アドレスに a タグを追加します)_PHP チュートリアル

PHP は URL アドレスを完全な a タグリンクコードに変換します (php は URL アドレスに a タグを追加します)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:40:44956ブラウズ

抽出する必要があるコンテンツは次のとおりです:

コードをコピーします コードは次のとおりです:

http://baidu.comこれは最初の A ですタグ、
成長の足跡 - インターネット開発に焦点を当てるこれは 2 番目の A タグです。
http://www.jb51.net これは抽出する必要がある最初の URL アドレスです、
http://blog.baidu.com これは抽出する必要がある 2 番目の URL アドレスです。
、これは IMG タグです

Weibo で URL をハイパーリンク アドレスとして自動抽出するのと同様です。つまり、コンテンツが抽出され、A タグが追加され、実際のハイパーリンクに変換されます。長い間オンラインで検索しましたが、実用的な解決策が見つかりませんでした。多くは単にURLを抽出するだけ(AタグやIMGタグ内のアドレスも抽出して置き換える)であり、上記のニーズを満たすことができません。正規表現には、抽出中に A タグを除外できるメソッドはありません。そこで私は考え方を変え、「カーブで国を救う」ことにしました。つまり、最初にすべての A タグと IMG タグを統一タグに置き換えます。次に、URL アドレスを抽出してハイパーリンクに置き換えます。最後に、統一タグを復元して以前の A タグと IMG タグに置き換えます。

コードをコピーします コードは次のとおりです:

function linkAdd($content){
//すべての A タグを抽出して置換します (統合タグ<{link}>)
preg_match_all('/< ;a. *?href=".*?".*?>.*?/i',$content,$linkList);
$linkList=$linkList[0];
$str= preg_replace(' /.*?/i','<{link}>',$content);

//すべての 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 タグです


それが私たちが望んでいることです。
例 2、

コードをコピーします コードは次のとおりです:

/**
* Silva コードに基づいて修正された PHP バージョン
* URL アドレスを完全な A タグリンクコードに変換
*/

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;
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/710607.html技術記事抽出が必要な内容は次のとおりです: 复制代网次のとおり: a href="http://baidu.com"http://baidu.com/aこれは第一亜标签、a href="http://blog. baidu.com「成长脚印-相互に注目しています...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。