ホームページ >バックエンド開発 >PHPチュートリアル >phpQuery に基づく PHP 一般コレクション クラス Sharing_PHP チュートリアル

phpQuery に基づく PHP 一般コレクション クラス Sharing_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:34:221075ブラウズ

1. コレクションのソースコード

コードをコピーします コードは次のとおりです:

/**
*一般リストコレクションクラス
*バージョン V1.3
*作者: JAE
*/
require_once '../phpQuery/phpQuery/phpQuery.php';
class QueryList{

private $pageURL;
private $regArr = array();
public $jsonArr = array();
private $regRange;
private $html;
/**************************************************
* パラメータ:ページアドレスセレクター配列ブロックセレクター
* [セレクター配列] 説明: 形式 array("name"=>array("selector", "type"),....)
説明: 値 "text"、" html", "attribute"
*[ブロック選択デバイス]: ルールに従っていくつかの大きな部分を選択し、ブロック内で関連する選択を実行することを指します
****** ******** ***********************************/
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();
}
プライベート関数 getList()
{

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

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

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

switch($reg_value[1])
{
case 'text':
$this- >jsonArr[$i][$key] =rim(pq($iobj)->text());
Break;
case 'html':
$this->jsonArr[$i][$key ] = トリム(pq($iobj)->html());
ブレーク;
デフォルト:
$this->jsonArr[$i][$key] = pq($iobj)->attr($ reg_value[1]);
ブレーク;

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


$i=0;
foreach($lobj as $item)
{
switch($reg_value[1])
{
case 'text':
$this-&g t;jsonArr[$i++][$key] =rim(pq($item)->text());
Break;
'html':
$this->jsonArr[$i++][$key] = trim(pq($item)-> ;html());
ブレーク;
デフォルト:
$this->jsonArr [$i++][$key] = pq($item)->attr($reg_value[1]);
ブレーク;

}


}


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

}

二、使用例

复制代価代価如下:

'Query/QueryList.class.php'が必要です;


//OSCコード共有リスト、タイトルリンク作成者を収集
$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) ;
//現在のページの右側にある TOP40 のアクティブな投稿者の画像も収集して JSON データを取得したい場合は、次のように記述できます
$reg = array("portrait"=>array(".hot_top img","src")) ;
$hj->setQuery($reg);
$json = $hj->getJSON();
echo $json . "


";

//OSC コンテンツ ページのコンテンツを収集します
$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);

//たくさんの例を挙げましたが、コレクションに使用すると非常に便利です

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/751515.html技術記事 1. コレクション クラスのソース コードを次のようにコピーします。 ?php /**・汎用リスト収集クラス ・バージョン V1.3 ・作者:JAE*/ require_once '../phpQuery/phpQuery/phpQuery.php';
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。