Home  >  Article  >  Backend Development  >  A PHP general collection class based on phpQuery sharing_PHP tutorial

A PHP general collection class based on phpQuery sharing_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:34:221021browse

1. Collection source code

Copy the code The code is as follows:

  /**
*General list collection class
*Version V1.3
*Author: JAE
*/
    require_once '../phpQuery/phpQuery/phpQuery.php';
    class QueryList{

        private $pageURL;
         private $regArr = array();
         public $jsonArr = array();
         private $regRange;
         private $html;
         /**************************************************
* Parameters: Page address selector array block selector
* [Selector array] Description: Format array("name"=>array("selector","type"),.....)
           * [Type] Description: Values ​​"text", "html", "attribute" Choice
********************************************* ****/
         function QueryList($pageURL,$regArr=array(),$regRange='')
         {
             $this->pageURL = $pageURL;

             //为了能获取https://
               $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL,$this->pageURL);
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
                curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
                $this->html = curl_exec($ch);
               curl_close($ch);

             if(!empty($regArr))
             {

                  $this->regArr = $regArr;
                 $this->regRange = $regRange;
                 $this->getList();
             }

         }
         function setQuery($regArr,$regRange='')
         {
             $this->jsonArr=array();
             $this->regArr = $regArr;
             $this->regRange = $regRange;
             $this->getList();
         }
        private function getList()
         {

             $hobj = phpQuery::newDocumentHTML($this->html);
             if(!empty($this->regRange))
             {
             $robj = pq($hobj)->find($this->regRange);

              $i=0;
             foreach($robj as $item)
             {

                 while(list($key,$reg_value)=each($this->regArr))
                 {
                     $iobj = pq($item)->find($reg_value[0]);

                       switch($reg_value[1])
                       {
                           case 'text':
                                 $this->jsonArr[$i][$key] = trim(pq($iobj)->text());
                                 break;
                           case 'html':
                                 $this->jsonArr[$i][$key] = trim(pq($iobj)->html());
                                 break;
                           default:
                                $this->jsonArr[$i][$key] = pq($iobj)->attr($reg_value[1]);
                                break;

                        }
                 }
                 //重置数组指针
                 reset($this->regArr);
                 $i++;
              }
             }
             else
             {
            while(list($key,$reg_value)=each($this->regArr))
             {
                $lobj = pq($hobj)->find($reg_value[0]);

                  
                   $i=0;
                   foreach($lobj as $item)
                   {
                       switch($reg_value[1])
                       {
                           case 'text':
                                 $this->jsonArr[$i++][$key] = trim(pq($item)->text());
                                 break;
                           case 'html':
                                 $this->jsonArr[$i++][$key] = trim(pq($item)->html());
                                 break;
                           default:
                                $this->jsonArr[$i++][$key] = pq($item)->attr($reg_value[1]);
                                break;

                        }

                    
                   }

       
             }
           }
         } 
         function getJSON()
         {
             return json_encode($this->jsonArr);
         }

}

二、使用例子

复制代码 代码如下:

require 'Query/QueryList.class.php';


//Collect OSC code sharing list, title link author
$url = "http://www.oschina.net/code/list";
$reg = array("title "=>array(".code_title a:eq(0)","text"),"url"=>array(".code_title a:eq(0)","href"),"author"= >array("img","title"));
$rang = ".code_list li";
$hj = new QueryList($url,$reg,$rang);
$arr = $hj->jsonArr;
print_r($arr);
//If you also want to collect the TOP40 active contributor images on the right side of the current page and get the JSON data, you can write like this
$reg = array ("portrait"=>array(".hot_top img","src"));
$hj->setQuery($reg);
$json = $hj->getJSON();
echo $json . "


";

//Collect the content of OSC content page
$url = "http://www.oschina.net/code/snippet_186288_23816";
$reg = array("title"=>array(". QTitle h1","text"),"con"=>array(".Content","html"));
$hj = new QueryList($url,$reg);
$arr = $hj->jsonArr;
print_r($arr);

//Just give so many examples, is it very convenient to use for collection?

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/751515.htmlTechArticle1. Collection source code copy code is as follows: ?php /***General list collection class *Version V1.3 *Author: JAE*/ require_once '.. /phpQuery/phpQuery/phpQuery.php'; class QueryList{ priva...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn