总结了一个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://php.hhsy.cc'); echo "<pre>"; print_r($links);