欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP文章采集URL補全函數(shù)(FormatUrl)

 更新時間:2012年08月02日 22:46:27   作者:  
寫此函數(shù)作用就是為了開發(fā)采集程序,采集文章的時候會經(jīng)常遇到頁面里的路徑是 相對路徑 或者 絕對根路徑 不是 絕對全路徑 就無法收集URL
寫采集必用的函數(shù),URL補全函數(shù),也可叫做FormatUrl。
寫此函數(shù)作用就是為了開發(fā)采集程序,采集文章的時候會經(jīng)常遇到頁面里的路徑是 “相對路徑” 或者 “絕對根路徑” 不是“絕對全路徑”就無法收集URL。

所以,就需要本功能函數(shù)進行對代碼進行格式化,把所有的超鏈接都格式化一遍,這樣就可以直接收集到正確的URL了。

路徑知識普及
相對路徑:“../” “./” 或者前面什么都不加
絕對根路徑:/path/xxx.html
絕對全路徑:http://www.xxx.com/path/xxx.html
使用實例:
復(fù)制代碼 代碼如下:

<?php
$surl="http://www.dbjr.com.cn/";
$gethtm = '<a href="/index.htm">首頁</a><a href="Resolvent/index.htm">解決方案</a>';
echo formaturl($gethtm,$surl);
?>

輸出:<a href="http://www.dbjr.com.cn/index.htm">首頁</a><a href="http://www.dbjr.com.cn/Resolvent/index.htm">解決方案</a>
--------- 演示實例 ------------
原始路徑代碼:http://www.newnew.cn/newnewindex.aspx
輸出演示代碼:http://www.maifp.com/aaa/test.php
以下是函數(shù)代碼
復(fù)制代碼 代碼如下:

<?php
function formaturl($l1,$l2){
if (preg_match_all("/(<img[^>]+src=\"([^\"]+)\"[^>]*>)|(<a[^>]+href=\"([^\"]+)\"[^>]*>)|(<img[^>]+src='([^']+)'[^>]*>)|(<a[^>]+href='([^']+)'[^>]*>)/i",$l1,$regs)){
foreach($regs[0] as $num => $url){
$l1 = str_replace($url,lIIIIl($url,$l2),$l1);
}
}
return $l1;
}
function lIIIIl($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):(\/\/|\\\\)(([\w\/\\\+\-~`@:%])+\.)+([\w\/\\\.\=\?\+\-~`@\':!%#]|(&amp;)|&)+/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);
}
?>

下面的鏈接是學(xué)習(xí)PHP正則表達式的地方。在這里留個鏈接,防止丟失。。。

相關(guān)文章

  • PHP執(zhí)行l(wèi)inux命令常用函數(shù)匯總

    PHP執(zhí)行l(wèi)inux命令常用函數(shù)匯總

    一般情況下,很少會用php去執(zhí)行l(wèi)inux命令,不過特殊情況下,你也許會用到這些函數(shù)。以前我知道有二個函數(shù)可以執(zhí)行l(wèi)inux命令,一個是exec,一個是shell_exec,通過本文給大家介紹PHP執(zhí)行l(wèi)inux命令常用函數(shù)匯總,需要的朋友參考下
    2016-02-02
  • 給ECShop添加最新評論

    給ECShop添加最新評論

    這篇文章主要介紹了給ECShop添加最新評論的方法及代碼分享,需要的朋友可以參考下
    2015-01-01
  • PHP解碼unicode編碼的中文字符代碼分享

    PHP解碼unicode編碼的中文字符代碼分享

    晚上在抓取某網(wǎng)站數(shù)據(jù),結(jié)果在數(shù)據(jù)包中發(fā)現(xiàn)了這么一串編碼的數(shù)據(jù):"......\u65b0\u6d6a\u5fae\u535a......", 這其實是中文被unicode編碼后了的數(shù)據(jù),我現(xiàn)在就是想解碼出中文來,上度娘搞了半天,試了很多的姿(方)勢(法),終于搞定了。
    2014-08-08
  • PHP微信開發(fā)之文本自動回復(fù)

    PHP微信開發(fā)之文本自動回復(fù)

    這篇文章主要為大家詳細介紹了PHP微信開發(fā)之簡單實現(xiàn)文本自動回復(fù)的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Laravel 加載第三方類庫的方法

    Laravel 加載第三方類庫的方法

    這篇文章主要介紹了Laravel 加載第三方類庫的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • PHP圖片驗證碼制作實現(xiàn)分享(全)

    PHP圖片驗證碼制作實現(xiàn)分享(全)

    最近正在學(xué)習(xí)php入門,現(xiàn)在剛?cè)腴T,所以許多都不知道,就從最基礎(chǔ)的學(xué)起,不會的上網(wǎng)查,然后把它記在這個法寶內(nèi)
    2012-05-05
  • Laravel訪問出錯提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解決方法

    Laravel訪問出錯提示:`Warning: require(/vendor/autoload.php): faile

    這篇文章主要介紹了Laravel訪問出錯提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解決方法,涉及Laravel框架相關(guān)配置與安裝操作技巧,需要的朋友可以參考下
    2019-04-04
  • php生成驗證碼,縮略圖及水印圖的類分享

    php生成驗證碼,縮略圖及水印圖的類分享

    這篇文章主要給大家分享的是php生成驗證碼,縮略圖,及水印圖的類,十分的實用,有需要的小伙伴可以參考下
    2016-04-04
  • TP3.2批量上傳文件或圖片 同名沖突問題的解決方法

    TP3.2批量上傳文件或圖片 同名沖突問題的解決方法

    這篇文章主要為大家詳細介紹了TP3.2批量上傳文件或圖片,同名沖突問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • set_exception_handler函數(shù)在ThinkPHP中的用法

    set_exception_handler函數(shù)在ThinkPHP中的用法

    這篇文章主要介紹了set_exception_handler函數(shù)在ThinkPHP中的用法,分析了官方給出了set_exception_handler函數(shù)用法說明及示例,并講述了在ThinkPHP中的應(yīng)用實例,需要的朋友可以參考下
    2014-10-10

最新評論