当前位置:Gxlcms > PHP教程 > PHP获取页面中所有链接的正则

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

时间:2021-07-01 10:21:17 帮助过:32人阅读

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

/*

*PHP获取页面中的所有链接
*/
function getPageLink($url){
set_time_limit(0);
$html=file_get_contents($url);
preg_match_all("/]+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.scutephp.com');

echo "
";
print_r($links);

人气教程排行