php函数:PHP开发采集程序URL补全函数

写采集必用的函数,URL补全函数,也可叫做FormatUrl。

写此函数作用就是为了开发采集程序,采集文章的时候会经常遇到页面里的路径是“相对路径”或者“绝对根路径”不是“绝对全路径”就无法收集URL。

所以,就需要本功能函数进行对代码进行格式化,把所有的超链接都格式化一遍,这样就可以直接收集到正确的URL了。

路径知识普及
相对路径:“../”“./”或者前面什么都不加
绝对根路径:/path/xxx.html
绝对全路径:http://www.xxx.com/path/xxx.html

使用实例:
[php]
<?php
$surl=\"http://www.7lian.com/\";
$gethtm=’首页解决方案’;
echoformaturl($gethtm,$surl);
?>
[/php]
输出:首页解决方案

---------演示实例------------
原始路径代码:http://www.newnew.cn/newnewindex.aspx
输出演示代码:http://www.maifp.com/aaa/test.php


[php]
<?php
functionformaturl($l1,$l2){
if(preg_match_all(\"/(]+src=\\\"([^\\\"]+)\\\"[^>]*>)|(]+href=\\\"([^\\\"]+)\\\"[^>]*>)|(]+src=’([^’]+)’[^>]*>)|(]+href=’([^’]+)’[^>]*>)/i\",$l1,$regs)){
foreach($regs[0]as$num=>$url){
$l1=str_replace($url,lIIIIl($url,$l2),$l1);
}
}
return$l1;
}
functionlIIIIl($l1,$l2){
if(preg_match(\"/(.*)(href|src)\\=(.+?)(|\\/\\>|\\>).*/i\",$l1,$regs)){$I2=$regs[3];}
if(strlen($I2)>0){
$I1=str_replace(chr(34),\"\",$I2);
$I1=str_replace(chr(39),\"\",$I1);
}else{return$l1;}
$url_parsed=parse_url($l2);
$scheme=$url_parsed[\"scheme\"];if($scheme!=\"\"){$scheme=$scheme.\"://\";}
$host=$url_parsed[\"host\"];
$l3=$scheme.$host;
if(strlen($l3)==0){return$l1;}
$path=dirname($url_parsed[\"path\"]);if($path[0]==\"\\\\\"){$path=\"\";}
$pos=strpos($I1,\"#\");
if($pos>0)$I1=substr($I1,0,$pos);

//判断类型
if(preg_match(\"/^(http|https|ftp)sad\\/\\/|\\\\\\\\)(([\\w\\/\\\\\\+\\-~`@:%])+\\.)+([\\w\\/\\\\\\.\\=\\?\\+\\-~`@\\’:!%#]|(&)|&)+/i\",$I1)){return$l1;}//http开头的url类型要跳过
elseif($I1[0]==\"/\"){$I1=$l3.$I1;}//绝对路径
elseif(substr($I1,0,3)==\"../\"){//相对路径
while(substr($I1,0,3)==\"../\"){
$I1=substr($I1,strlen($I1)-(strlen($I1)-3),strlen($I1)-3);
if(strlen($path)>0){
$path=dirname($path);
}
}
$I1=$l3.$path.\"/\".$I1;
}
elseif(substr($I1,0,2)==\"./\"){
$I1=$l3.$path.substr($I1,strlen($I1)-(strlen($I1)-1),strlen($I1)-1);
}
elseif(strtolower(substr($I1,0,7))==\"mailto:\"||strtolower(substr($I1,0,11))==\"javascript:\"){
return$l1; [Page]
}else{
$I1=$l3.$path.\"/\".$I1;
}
returnstr_replace($I2,\"\\\"$I1\\\"\",$l1);
}
?>
[/php]
Tags:  php日期函数 php函数手册 php时间函数 php函数

延伸阅读

最新评论

发表评论