当前位置:首页 > CMS教程 > Destoon > 列表

修改destoon的单页采编函数

发布:smiling 来源: PHP粉丝网  添加日期:2014-06-05 17:00:16 浏览: 评论:0 

destoon的fetch_url函数作用是抓取网站页面,然后按照一定的规则获取网页中的内容,把内容分别自动填写到标题内容中去,这样就免去了编辑复制、粘贴的痛苦.

但是destoon自带的fetch_url函数有一个弱点,无法处理某些比较“贱”的网站,有些网站把内容显示一半,然后做个链接,你必须点那个链接,才能看到所有内容,针对这种情况,我重新写了一个函数,满足自动获取内容的功能.

  1. function fetch_url1($url,$nonedisplay="") { 
  2.         global $db
  3.         $fetch = array(); 
  4.         $tmp = parse_url($url);//解析 URL,返回其组成部分 
  5.         $domain = $tmp['host'];//提取主机域名 
  6.         $r = $db->get_one("SELECT * FROM {$db->pre}fetch WHERE domain='$domain' ORDER BY edittime DESC"); 
  7.         if($r) { 
  8.                 $content = file_get($url); 
  9.                 if($content) { 
  10.                         $content = convert($content$r['encode'], DT_CHARSET); 
  11.                         preg_match("/ 
  12.                         //网页标题当做新闻标题 
  13.                         if(isset($m[1])) $fetch['title'] = trim($r['title'] ? str_replace($r['title'], ''$m[1]) : $m[1]); 
  14.                         preg_match("/ 
  15.                         //网页description里面的内容当做新闻简介 
  16.                         if(isset($m[1])) $fetch['introduce'] = $m[1]; 
  17.                         list($f$t) = explode('[content]'$r['content']); 
  18.                          
  19.                         if($f && $t) { 
  20.                                 $s = strpos($content$f); 
  21.                                 //开始标签在内容的位置 
  22.                                 if($s !== false) { 
  23.                                         $e = strpos($content$t$s);//结束标签在内容的位置 
  24.                                         if($e !== false && $e > $s) { 
  25.                                                 $fetch['content'] = substr($content$s + strlen($f), $e - $s - strlen($f)); 
  26.                                                 //取出html元素中的内容当做新闻内容 
  27.                                         } 
  28.                                 } 
  29.                         } 
  30.                         if($nonedisplay){ 
  31.                                 list($f,$t) = explode('[content]'$nonedisplay); 
  32.                                 if($f && $t){ 
  33.                                         $s = strpos($content$f); 
  34.                                         //开始标签在内容的位置 
  35.                                         if($s !== false) { 
  36.                                                 $e = strpos($content$t$s);//结束标签在内容的位置 
  37.                                                 if($e !== false && $e > $s) { 
  38.                                                         $fetch['content'] = $fetch['content'].substr($content$s + strlen($f), $e - $s - strlen($f)); 
  39.                                                         //取出html元素中的内容当做新闻内容 
  40.                                                         //过滤链接 
  41.                                                         $fetch['content'] = str_replace(' 查看全部 »'''$fetch['content']); 
  42.                                                         //过滤链接 
  43.                                                         $fetch['content'] = str_replace(' « 收起'''$fetch['content']); 
  44.                                                 } 
  45.                                         } 
  46.                                 } 
  47.                         } 
  48.                 } 
  49.         } 
  50.  
  51.         return $fetch

Tags: destoon 单页采编 函数

分享到: