php正則匹配獲取指定url網頁頁面超級鏈接地址_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:php定時計劃任務的實現方法
      我在uchome 中 分析到, uchome是這樣做的 1. 把所有的計劃任務存放到數據庫 2. 每次用戶進行操作或打開頁面的時候都按排序執行一條計劃任務. 也就是輪番判斷,時間到了的, 就在用戶進程中執行. uchome的計劃任務代碼在 ./source/function_cron.php 上面只自己分析uchome

       在數據采集與頁面分析中,常需要抓取給定url頁面的內容,或者第二、第三層次深度頁面內容。

      這里是一個測試例子的實現,僅供參考。

      代碼如下:


      /*
      匹配給定頁面鏈接
      return:array match[link,content,all]
      */
      function match_links($host, $document) {
       $pattern = '/<a(.*?)href="(.*?)"(.*?)>(.*?)</a>/i'; 
       preg_match_all($pattern, $document, $m); 
       return $m;

       preg_match_all("'<s*as.*?hrefs*=s*(["'])?(?(1)(.*?)\1|([^s>]+))[^>]*>?(.*?)</a>'isx",$document,$links);
       while(list($key,$val) = each($links[2])) {
        if(!empty($val))
         if(preg_match("/http/",$val)){
          $match['link'][] = $val;
         }
         else {
          $match['link'][] = $host . $val;
         }
       }
       while(list($key,$val) = each($links[3])) {
        if(!empty($val))
         if(preg_match("/http/",$val)){
          $match['link'][] = $val;
         }
         else {
          $match['link'][] = $host . $val;
         }
       }
       while(list($key,$val) = each($links[4])) {
        if(!empty($val))
         $match['content'][] = $val;
       }
       while(list($key,$val) = each($links[0])) {
        if(!empty($val))
         $match['all'][] = $val;
       }
       return $match['link'];
      }

      /*
      從給定url中獲取頁面文本內容
      */
      function get_content_from_url($url) {
       $str = @file_get_contents($url);
       if(mb_check_encoding($str, "GBK"))
        $str = iconv("GBK","UTF-8", $str);
       $str = strip_tags($str); // 過濾html標簽
      /* 
       $str = preg_replace( "@<script(.*?)</script>@is", "", $str );
       $str = preg_replace( "@<iframe(.*?)</iframe>@is", "", $str );
       $str = preg_replace( "@<style(.*?)</style>@is", "", $str );
       $str = preg_replace( "@<(.*?)>@is", "", $str );
      */
       //過濾非漢字字符
       preg_match_all('/[x{4e00}-x{9fff}]+/u', $str, $matches);
       $str = join(',', $matches[0]);
       if(!$str)
        return NULL;
       
       return $str;
      }

      function get_content($url,$depth) {
       if(!$url || $depth < 1)
        return false;

       while($depth > 1){
        $str = @file_get_contents($url);
        if(!$str)
         return false;

        $parseurl = parse_url($url); 
        if($parseurl['host'])
         $host = $parseurl[scheme] . "://" . $parseurl['host'];
        
        $arrlink = match_links($host,$str);
        $arr_url = array_unique($arrlink);

        $depth--;
        foreach($arr_url as $url){
         $content .= get_content($url, $depth); //遞歸調用
        }
       }

       $content .= get_content_from_url($url);
        
       return $content;
      }

      分享:PHP使用DES進行加密與解密的方法
      代碼如下: //$input - stuff to decrypt //$key - the secret key to use function do_mencrypt($input, $key) { $input = str_replace(n, , $input); $input = str_replace(t, , $input); $input = str_replace(r, , $input); $key = substr(md5($key), 0, 24); $td =

      來源:模板無憂//所屬分類:PHP教程/更新時間:2013-06-07
      相關PHP教程