php解析字符串里所有URL地址的方法
本文实例讲述了php解析字符串里所有URL地址的方法。分享给大家供大家参考。具体如下:
<?php //$html=thehtmlonthepage //$current_url=thefullurlthatthehtmlcamefrom //(onlyneededfor$repath) //$repath=converts../and/and//urlstofullvalidurls functionpageLinks($html,$current_url="",$repath=false){ preg_match_all("/\<a.+?href=(\"|')(?!javascript:|#)(.+?)(\"|')/i",$html,$matches); $links=array(); if(isset($matches[2])){ $links=$matches[2]; } if($repath&&count($links)>0&&strlen($current_url)>0){ $pathi=pathinfo($current_url); $dir=$pathi["dirname"]; $base=parse_url($current_url); $split_path=explode("/",$dir); $url=""; foreach($linksas$k=>$link){ if(preg_match("/^\.\./",$link)){ $total=substr_count($link,"../"); for($i=0;$i<$total;$i++){ array_pop($split_path); } $url=implode("/",$split_path)."/".str_replace("../","",$link); }elseif(preg_match("/^\/\//",$link)){ $url=$base["scheme"].":".$link; }elseif(preg_match("/^\/|^.\//",$link)){ $url=$base["scheme"]."://".$base["host"].$link; }elseif(preg_match("/^[a-zA-Z0-9]/",$link)){ if(preg_match("/^http/",$link)){ $url=$link; }else{ $url=$dir."/".$link; } } $links[$k]=$url; } } return$links; } header("content-type:text/plain"); $url="https://www.nhooo.com"; $html=file_get_contents($url); //Getslinksfromthepage: print_r(pageLinks($html)); //Getslinksfromthepageandformatsthemtoafullvalidurl: print_r(pageLinks($html,$url,true));
希望本文所述对大家的php程序设计有所帮助。