PHP获取页面的所有链接的正则

 
更多

总结了一个PHP获取页面中的所有链接的函数,函数代码如下:

/*
*PHP获取页面中的所有链接
*/
function getPageLink($url){
	set_time_limit(0);
	$html=file_get_contents($url);
	preg_match_all("/<a(s*[^>]+s*)href=([\"|']?)([^\"'>\s]+)([\"|']?)/ies",$html,$out);
	$arrLink=$out[3];
	$arrUrl=parse_url($url);
	$dir='';
	if(isset($arrUrl['path'])&&!empty($arrUrl['path'])){
		$dir=str_replace("\\","/",$dir=dirname($arrUrl['path']));
		if($dir=="/"){
			$dir="";
		}
	}
	if(is_array($arrLink)&&count($arrLink)>0){
		$arrLink=array_unique($arrLink);
		foreach($arrLink as $key=>$val){
			$val=strtolower($val);
			if(preg_match('/^#*$/isU',$val)){
				unset($arrLink[$key]);
			}elseif(preg_match('/^\//isU',$val)){
				$arrLink[$key]='http://'.$arrUrl['host'].$val;
			}elseif(preg_match('/^javascript/isU',$val)){
				unset($arrLink[$key]);
			}elseif(preg_match('/^mailto:/isU',$val)){
				unset($arrLink[$key]);
			}elseif(!preg_match('/^\//isU',$val)&&strpos($val,'http://')===FALSE){
				$arrLink[$key]='http://'.$arrUrl['host'].$dir.'/'.$val;
			}
		}
	}
	sort($arrLink);
	return $arrLink;
}

函数用法如下:

$links=getPageLink('http://www.phpernote.com');
echo "<pre>";
print_r($links);
打赏

本文固定链接: https://www.cxy163.net/archives/4315 | 绝缘体

该日志由 绝缘体.. 于 2013年05月23日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: PHP获取页面的所有链接的正则 | 绝缘体
关键字: , , , ,

PHP获取页面的所有链接的正则:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter