最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

輸出:<a href="http://m.fzitv.net/index.htm">首頁</a><a href="http://m.fzitv.net/Resolvent/index.htm">解決方案</a>
--------- 演示實(shí)例 ------------
原始路徑代碼: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;}//絕對(duì)路徑
elseif(substr($I1,0,3)=="../"){//相對(duì)路徑
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正則表達(dá)式的地方。在這里留個(gè)鏈接,防止丟失。。。

相關(guān)文章

  • PHP中ajax無刷新上傳圖片與圖片下載功能

    PHP中ajax無刷新上傳圖片與圖片下載功能

    本文給大家分享php ajax無刷新上傳圖片與圖片下載功能的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下
    2017-02-02
  • thinkphp在php7環(huán)境下提示Cannot use ‘String’ as class name as it is reserved的解決方法

    thinkphp在php7環(huán)境下提示Cannot use ‘String’ as class name as it is

    這篇文章主要介紹了thinkphp在php7環(huán)境下提示Cannot use ‘String’ as class name as it is reserved的解決方法,涉及thinkPHP針對(duì)php7關(guān)鍵字判定的相關(guān)底層代碼修改技巧,需要的朋友可以參考下
    2016-09-09
  • PHP Streams(流)詳細(xì)介紹及使用

    PHP Streams(流)詳細(xì)介紹及使用

    這篇文章主要介紹了PHP Streams(流)詳細(xì)介紹及使用,PHP Streams是內(nèi)置核心操作,可能一般的開發(fā)者很少用,它用于統(tǒng)一文件、網(wǎng)絡(luò)、數(shù)據(jù)壓縮等類文件操作方式,并為這些類文件操作提供一組通用的函數(shù)接口,需要的朋友可以參考下
    2015-05-05
  • PHP獲取音頻文件的相關(guān)信息

    PHP獲取音頻文件的相關(guān)信息

    這篇文章主要介紹了PHP獲取音頻文件的相關(guān)信息的相關(guān)資料,非常的實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • Yii2中SqlDataProvider用法示例

    Yii2中SqlDataProvider用法示例

    這篇文章主要介紹了Yii2中SqlDataProvider用法,結(jié)合實(shí)例形式分析了Yii2框架中使用SqlDataProvider類操作數(shù)據(jù)庫的相關(guān)技巧,需要的朋友可以參考下
    2016-09-09
  • 掌握Laravel框架中容器的管理依賴實(shí)現(xiàn)松耦合

    掌握Laravel框架中容器的管理依賴實(shí)現(xiàn)松耦合

    這篇文章主要為大家介紹了掌握Laravel框架中容器管理依賴實(shí)現(xiàn)松耦合,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • laravel郵件發(fā)送的實(shí)現(xiàn)代碼示例

    laravel郵件發(fā)送的實(shí)現(xiàn)代碼示例

    這篇文章主要介紹了laravel郵件發(fā)送的實(shí)現(xiàn)代碼示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • PHP 二維關(guān)聯(lián)數(shù)組根據(jù)其中一個(gè)字段排序(推薦)

    PHP 二維關(guān)聯(lián)數(shù)組根據(jù)其中一個(gè)字段排序(推薦)

    這篇文章主要介紹了PHP 二維關(guān)聯(lián)數(shù)組根據(jù)其中一個(gè)字段排序的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-04-04
  • php格式化時(shí)間戳

    php格式化時(shí)間戳

    一般mysql數(shù)據(jù)庫中存儲(chǔ)時(shí)間都是使用的Unix時(shí)間戳,那么我們顯示時(shí)間的時(shí)候如果更加的友好呢,今天就給大家分享3個(gè)封裝好的格式化函數(shù),有需要的小伙伴可以參考下
    2016-12-12
  • 使用PHP連接數(shù)據(jù)庫_實(shí)現(xiàn)用戶數(shù)據(jù)的增刪改查的整體操作示例

    使用PHP連接數(shù)據(jù)庫_實(shí)現(xiàn)用戶數(shù)據(jù)的增刪改查的整體操作示例

    下面小編就為大家?guī)硪黄褂肞HP連接數(shù)據(jù)庫_實(shí)現(xiàn)用戶數(shù)據(jù)的增刪改查的整體操作示例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09

最新評(píng)論

油尖旺区| 平昌县| 英德市| 伊吾县| 遂溪县| 青河县| 中卫市| 庆元县| 梁河县| 墨玉县| 大方县| 会泽县| 达州市| 岱山县| 志丹县| 澎湖县| 美姑县| 大连市| 佛山市| 新干县| 迭部县| 恩平市| 淅川县| 环江| 汤阴县| 博湖县| 灌阳县| 尖扎县| 东阳市| 郧西县| 平安县| 军事| 乌苏市| 丘北县| 孝义市| 滨海县| 左云县| 郎溪县| 确山县| 宜阳县| 南木林县|