«

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

时间:2024-1-19 17:09     作者:韩俊     分类: 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.maopiaopiao.com');
echo "<pre>";
print_r($links);

标签: php php教程

热门推荐