忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/03/29 20:16 |
Zend Framework2.0.6 Zend\Dom\Query
Zend\Dom\QueryはHTMLをDOMで扱うクラスです。

ZF1.11のZend_Dom_Queryを使いましたが、ぶっちゃけ同じです。

<?php

	//Zend\Dom\Query
		require_once('path/to/channel/vendor/autoload.php');
		$domQuery = new Zend\Dom\Query();
	
	//パース
		$text = file_get_contents('http://framework.zend.com/manual/2.0/en/index.html');
		$domQuery->setDocument($text, 'UTF-8');
	
	//パースしたドキュメントの形式 docXml / docHtml / docXhtml
		print($domQuery->getDocumentType());
	
	//libxml_get_errors
		var_dump($domQuery->getDocumentErrors());
	
	//CSSパスを指定
		$nodeList = $domQuery->execute('body div#main-content-wrapper div#site-content section.manual div#programmersreferenceguideofzendframework2 div#zendframeworkreference div.section h3');
	
	//中身を順に処理
		foreach($nodeList as $key=>$domElement){
			//DOMElementが入ってくる
			print($domElement->firstChild->nodeValue . '<br />');
		}
	
	//CSSパス→XPathに変換できる
		print($nodeList->getXpathQuery());
query()がexecute()にかわったくらいで、ほぼそのまま利用できます。
馴染みがない上にわかりにくいXPathではなく、よく使うCSSパスで扱えるのが非常に便利ですね。

ちなみにこのCSSパスからXPathへの変換、Zend\Dom\Css2Xpathで行われているのですが、なんと100行程度しかありません。
私がやったら1000行くらいかかりそうだ…
PR


2013/01/04 20:44 | Comments(0) | PHP

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<今週の実績 2013/01/06 | HOME | デッドアイランド ZOTY脱出記 5日目>>
忍者ブログ[PR]