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程序设计有所帮助。