写采集必用的函数,URL补全函数,也可叫做FormatUrl。
写此函数作用就是为了开发采集程序,采集文章的时候会经常遇到页面里的路径是 “相对路径” 或者 “绝对根路径” 不是“绝对全路径”就无法收集URL。
所以,就需要本功能函数进行对代码进行格式化,把所有的超链接都格式化一遍,这样就可以直接收集到正确的URL了。
路径知识普及
相对路径:“../” “./” 或者前面什么都不加
绝对根路径:/path/xxx.html
绝对全路径:http://www.xxx.com/path/xxx.html
使用实例:
首页大学排行‘;
echo formaturl($gethtm,$surl);
?>
输出:
首页大学排行
函数代码如下:
//判断类型
if (preg_match ( “/^(http|https|ftp):(\/\/|\\\\)(([\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;
} else {
$I1 = $l3 . $path . “/” . $I1;
}
return str_replace ( $I2, “\”$I1\””, $l1 );
}
?>
最后编辑:2015-08-12作者:admin
这个作者貌似有点懒,什么都没有留下。