首页 >后端开发 >php教程 >一个php文本采集类

一个php文本采集类

WBOY
WBOY原创
2016-07-25 09:07:16878浏览
  1. $C = new Collection();
  2. $C->url = 'http://bbs.it-home.org/subject_search?cat=1001&search_text=%E5%B9%B4%E8%BD%BB%E4%BA%BA';
  3. $C->startFlag = '

    ';
  4. $C->endFlag = '
    ';
  5. $C->init();
  6. $C->regExp = "|

    (.*)

    |Uis";
  7. $C->parse();
  8. print_rr($C->result);
  9. */
复制代码

php文本采集类文件:

  1. /**

  2. 模块名:php文本采集类
  3. **/
  4. class Collection{
  5. //入口 公有
  6. var $url; //欲分析的url地址
  7. var $content; //读取到的内容
  8. var $regExp; //要获取部分的正则表达式
  9. var $codeFrom; //原文的编码
  10. var $codeTo; //欲转换的编码
  11. var $timeout; //采集等待的时间
  12. var $startFlag; //文章开始采集的标志 默认为0 在进行采集条目时,只对$startFlag 和 $endFlag之间的文字块进行搜索和采集。

  13. var $endFlag; //文章结束采集的标志 默认为文章末尾 在进行采集条目时,只对$startFlag 和 $endFlag之间的文字块进行搜索和采集。
  14. var $block; //$startFlag 和 $endFlag之间的文字块
  15. //出口 私有
  16. var $result; //输出结果
  17. //初始化收集器

  18. function init(){
  19. if(empty($url))
  20. $this->getFile();
  21. $this->convertEncoding();
  22. }
  23. //采集所需内容
  24. function parse(){
  25. $this->getBlock();
  26. preg_match_all($this->regExp, $this->block ,$this->result,PREG_SET_ORDER);
  27. return $this->block;
  28. }
  29. //错误处理
  30. function error($msg){
  31. echo $msg;
  32. }
  33. //读取远程网页 如果成功,传回文件;如果失败传回false
  34. function getFile(){
  35. $datalines = @file($this->url);
  36. if(!$datalines){
  37. $this->error("can't read the url:".$this->url);
  38. return false;
  39. } else {
  40. $importdata = implode('', $datalines);
  41. $importdata = str_replace(array ("\r\n", "\r"), "\n", $importdata);
  42. $this->content = $importdata;
  43. }
  44. }
  45. //获取所需要的文字块
  46. function getBlock(){
  47. if(!empty($this->startFlag))
  48. $this->block = substr($this->content,strpos($this->content,$this->startFlag));
  49. if(!empty($this->endFlag))
  50. $this->block = substr($this->block,0,strpos($this->block,$this->endFlag));
  51. }
  52. //内容编码的转换
  53. function convertEncoding(){
  54. if(!empty($this->codeTo))
  55. $this->codeFrom = mb_detect_encoding($this->content);
  56. //如果给定转换方案,才执行转换。
  57. if(!empty($this->codeTo))
  58. $this->content = mb_convert_encoding($this->content,$this->codeTo,$this->codeFrom) or $this->error("can't convert Encoding");
  59. }
  60. }//end of class
  61. ?>
复制代码


声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn