ホームページ  >  記事  >  バックエンド開発  >  指定したURLのハイパーリンクアドレスを取得するPHP正規マッチング page_PHPチュートリアル

指定したURLのハイパーリンクアドレスを取得するPHP正規マッチング page_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:16:581120ブラウズ

データ収集とページ分析では、多くの場合、特定の URL ページのコンテンツ、または第 2 レベルまたは第 3 レベルの詳細なページ コンテンツをキャプチャする必要があります。

ここでは、参照のみを目的としたテスト例の実装を示します。

コードは次のとおりです:


/*
指定されたページリンクと一致します
return:配列の一致[リンク、コンテンツ、すべて]
*/
関数 match_links($host, $document) {
$pattern = '/(.*?)/i'; preg_match_all($pattern, $document, $m); $m を返します;

preg_match_all("']+))[^> ]*>?(.*?)'isx",$document,$links);

while(list($key,$val) = each($links[2])) {

if(!empty($val))
If(preg_match("/http/",$val)){
$match['link'][] = $val;
}
他に{
$match['link'][] = $host . }
}
while(list($key,$val) = each($links[3])) {
if(!empty($val))
If(preg_match("/http/",$val)){
$match['link'][] = $val;
}
他に{
$match['link'][] = $host . }
}
while(list($key,$val) = each($links[4])) {
if(!empty($val))
$match['content'][] = $val;
}
while(list($key,$val) = each($links[0])) {
if(!empty($val))
$match['all'][] = $val;
}
return $match['link'];
}

/*
指定された URL からページのテキスト コンテンツを取得します
*/

関数 get_content_from_url($url) {

$str = @file_get_contents($url);
if(mb_check_encoding($str, "GBK"))
$str = iconv("GBK","UTF-8", $str);
$str =strip_tags($str); // HTML タグをフィルターします
; /*
$str = preg_replace( "@@is", "", $str );
$str = preg_replace( "@

while($ Depth > 1){
$str = @file_get_contents($url);
if(!$str)

false を返します;


$parseurl = parse_url($url); if($parseurl['host'])
$host = $parseurl[スキーム] . $parseurl['host'];

$arrlink = match_links($host,$str);

$arr_url = array_unique($arrlink);

$深さ--;
foreach($arr_url を $url){
$content .= get_content($url, $ Depth); // 再帰呼び出し
}

}


$content .= get_content_from_url($url);

$content を返します;
}




http://www.bkjia.com/PHPjc/372096.html

www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/372096.html技術記事データ収集とページ分析では、特定の URL ページのコンテンツ、または第 2 レベルまたは第 3 レベルの詳細ページのコンテンツをキャプチャする必要があることがよくあります。 ここでは、参照のみを目的としたテスト例の実装を示します。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。