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

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

  1. /* 
  2. *PHP获取页面中的所有链接 
  3. */ 
  4. function getPageLink($url){ 
  5.     set_time_limit(0); 
  6.     $html=file_get_contents($url); 
  7.     preg_match_all("/<a(s*[^>]+s*)href=([\"|']?)([^\"'>\s]+)([\"|']?)/ies",$html,$out); 
  8.     $arrLink=$out[3]; 
  9.     $arrUrl=parse_url($url); 
  10.     $dir=''
  11.     if(isset($arrUrl['path'])&&!empty($arrUrl['path'])){ 
  12.         $dir=str_replace("\\","/",$dir=dirname($arrUrl['path'])); 
  13.         if($dir=="/"){ 
  14.             $dir=""
  15.         } 
  16.     } 
  17.     if(is_array($arrLink)&&count($arrLink)>0){ 
  18.         $arrLink=array_unique($arrLink); 
  19.         foreach($arrLink as $key=>$val){ 
  20.             $val=strtolower($val); 
  21.             if(preg_match('/^#*$/isU',$val)){ 
  22.                 unset($arrLink[$key]); 
  23.             }elseif(preg_match('/^\//isU',$val)){ 
  24.                 $arrLink[$key]='http://'.$arrUrl['host'].$val
  25.             }elseif(preg_match('/^javascript/isU',$val)){ 
  26.                 unset($arrLink[$key]); 
  27.             }elseif(preg_match('/^mailto:/isU',$val)){ 
  28.                 unset($arrLink[$key]); 
  29.             }elseif(!preg_match('/^\//isU',$val)&&strpos($val,'http://')===FALSE){ 
  30.                 $arrLink[$key]='http://'.$arrUrl['host'].$dir.'/'.$val
  31.             } 
  32.         } 
  33.     } 
  34.     sort($arrLink); 
  35.     return $arrLink

函数用法如下:

  1. $links=getPageLink('http://www.daimajiayuan.com'); 
  2. echo "<pre>"
  3. print_r($links); 

转载请注明:代码家园 » PHP获取页面的所有链接的正则

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)