当前位置:Gxlcms > PHP教程 > 一个php文本采集类

一个php文本采集类

时间:2021-07-01 10:21:17 帮助过:6人阅读

  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. /**
  3. 模块名:php文本采集类
  4. **/
  5. class Collection{
  6. //入口 公有
  7. var $url; //欲分析的url地址
  8. var $content; //读取到的内容
  9. var $regExp; //要获取部分的正则表达式
  10. var $codeFrom; //原文的编码
  11. var $codeTo; //欲转换的编码
  12. var $timeout; //采集等待的时间

  13. var $startFlag; //文章开始采集的标志 默认为0 在进行采集条目时,只对$startFlag 和 $endFlag之间的文字块进行搜索和采集。

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

  18. //初始化收集器

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

人气教程排行