Heim  >  Artikel  >  Backend-Entwicklung  >  一个php文本采集类

一个php文本采集类

WBOY
WBOYOriginal
2016-07-25 09:07:16840Durchsuche
  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. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn