国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP文章采集URL補全函數

2024-05-04 21:53:01
字體:
來源:轉載
供稿:網友

寫采集必用的函數,URL補全函數,也可叫做FormatUrl。

寫此函數作用就是為了開發采集程序,采集文章的時候會經常遇到頁面里的路徑是 “相對路徑” 或者 “絕對根路徑” 不是“絕對全路徑”就無法收集URL。

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

路徑知識普及

相對路徑:“../” “./” 或者前面什么都不加

絕對根路徑:/path/xxx.html

絕對全路徑:http://www.xxx.com/path/xxx.html

使用實例:

  1. <?php 
  2. $surl="http://www.soqi.cc/"
  3. $gethtm = '<a href="/">首頁</a><a href="/daxue/">大學排行</a>'
  4. echo formaturl($gethtm,$surl); 
  5. ?> 

輸出:

  1. <a href=http://www.soqi.cc>首頁</a><a href=http://www.soqi.cc/daxue/>大學排行</a> 

函數代碼如下:

  1. <?php    
  2.  function formaturl($l1$l2) {    
  3.     if (preg_match_all ( "/(<img[^>]+src=/"([^/"]+)/"[^>]*>)|(<a[^>]+href=/"([^/"]+)/"[^>]*>)|(<img[^>]+src='([^']+)'[^>]*>)|(<a[^>]+href='([^']+)'[^>]*>)/i"$l1$regs )) {    
  4.         foreach ( $regs [0] as $num => $url ) {    
  5.             $l1 = str_replace ( $url, lIIIIl ( $url$l2 ), $l1 );    
  6.         }    
  7.     }    
  8.     return $l1;    
  9. }    
  10.  function lIIIIl($l1$l2) {    
  11.     if (preg_match ( "/(.*)(href|src)/=(.+?)( |///>|/>).*/i"$l1$regs )) {    
  12.         $I2 = $regs [3];    
  13.     }    
  14.     if (strlen ( $I2 ) > 0) {    
  15.         $I1 = str_replace ( chr ( 34 ), ""$I2 );    
  16.         $I1 = str_replace ( chr ( 39 ), ""$I1 );    
  17.     } else {    
  18.         return $l1;    
  19.     }    
  20.     $url_parsed = parse_url ( $l2 );    
  21.     $scheme = $url_parsed ["scheme"];    
  22.     if ($scheme != "") {    
  23.         $scheme = $scheme . "://";    
  24.     }    
  25.     $host = $url_parsed ["host"];    
  26.     $l3 = $scheme . $host;    
  27.     if (strlen ( $l3 ) == 0) {    
  28.         return $l1;    
  29.     }    
  30.     $path = dirname ( $url_parsed ["path"] );    
  31.     if ($path [0] == "//") {  
  32.         $path = "";  
  33.     }  
  34.     $pos = strpos ( $I1"#" );  
  35.     if ($pos > 0)  
  36.         $I1 = substr ( $I1, 0, $pos );  
  37.       
  38.         //判斷類型  
  39.     if (preg_match ( "/^(http|https|ftp):(////|////)(([/w/////+/-~`@:%])+/.)+([/w/////./=/?/+/-~`@/':!%#]|(&amp;)|&)+/i"$I1 )) {  
  40.         return $l1;  
  41.     } //http開頭的url類型要跳過  
  42. elseif ($I1 [0] == "/") {  
  43.         $I1 = $l3 . $I1;  
  44.     } //絕對路徑  
  45. elseif (substr ( $I1, 0, 3 ) == "../") { //相對路徑  
  46.         while ( substr ( $I1, 0, 3 ) == "../" ) {  
  47.             $I1 = substr ( $I1strlen ( $I1 ) - (strlen ( $I1 ) - 3), strlen ( $I1 ) - 3 );  
  48.             if (strlen ( $path ) > 0) {  
  49.                 $path = dirname ( $path );  
  50.             }  
  51.         }  
  52.         $I1 = $l3 . $path . "/" . $I1;  
  53.     } elseif (substr ( $I1, 0, 2 ) == "./") {  
  54.         $I1 = $l3 . $path . substr ( $I1strlen ( $I1 ) - (strlen ( $I1 ) - 1), strlen ( $I1 ) - 1 );  
  55.     } elseif (strtolower ( substr ( $I1, 0, 7 ) ) == "mailto:" || strtolower ( substr ( $I1, 0, 11 ) ) == "javascript:") {  
  56.         return $l1;  
  57.     } else {  
  58.         $I1 = $l3 . $path . "/" . $I1;  
  59.     }  
  60.     return str_replace ( $I2"/"$I1/""$l1 );    
  61. }    
  62. ?>   

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇礼县| 瓮安县| 手机| 绥德县| 牙克石市| 久治县| 资兴市| 高邑县| 黄梅县| 格尔木市| 静海县| 无为县| 增城市| 剑阁县| 姚安县| 高阳县| 盈江县| 顺昌县| 胶南市| 兴化市| 秀山| 青铜峡市| 博白县| 鸡东县| 景东| 潜江市| 台南县| 长宁县| 靖宇县| 宜良县| 金湖县| 阳山县| 恩平市| 兰考县| 万州区| 始兴县| 突泉县| 叶城县| 福州市| 琼海市| 台中市|