一個php文本採集類

來源:互聯網
上載者:User
  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; //要擷取部分的Regex
  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. ?>

複製代碼
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.