« PHPerの為のMongoDB入門 | Androidって美味しい? »

2010.07.26

「htmlSql」を…

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをnewsingに追加

「HTMLをDBの如く使える凄いライブラリ」をコチラの記事ではCakePHPで使われてたので、
少しズラして同じPHPのフレームワークであるsymfonyで使ってみました。

というワケでsymfony上で使うまでの手順は概ねこんなところです。
置くだけで呼んでくれたので非常に楽でした。

【手順1】
コチラで取得して解凍します。

【手順2】
「htmlsql.class.php」「snoopy.class.php」の2つを、
symfonyプロジェクト内の「lib/」に配置します。

【手順3】
任意のアクションクラス内で実行するよう記述します。
なおwhere句の各条件はhtmlsql内でevalされますので、
変数や関数などは展開,実行されないよう記述してください。

//インスタンス生成
$htmlsql = new htmlsql(); // ←配置しただけでそのまま呼べます
//キーワード「s-cubism」のgoogle検索結果上位100件のリンク先URL
$keyword = “s-cubism”;
$num = 100;
$url = “http://www.google.co.jp/search?q=”.$keyword.”&num=”.$num;
$htmlsql->connect( ‘url’, $url ) or die( $htmlsql->error );
//「全てのaタグ」の中で―――
//「class属性値がl」「href属性値にgoogleを含まない」「href属性値がhttp://で始まる」
//を満たすものから「属性値href」を取得
$query = ”;
$query .= ’select ‘;
$query .= ‘href ‘;
$query .= ‘from ‘;
$query .= ‘a ‘;
$query .= ‘where ‘;
$query .= ‘$class==”l” ‘;
$query .= ‘and ‘;
$query .= ‘!preg_match(”/.*google.*/”,$href) ‘;
$query .= ‘and ‘;
$query .= ‘preg_match(”/^http:\/\//”,$href) ‘;
$htmlsql->query( $query ) or die( $htmlsql->error );
//配列形式で頂きます
$this->data = $htmlsql->fetch_array();

【手順4】
ビューテンプレート内で表示。

<div>
<ul>
<?PHP foreach( $data as $dt ): ?>
<li><?PHP echo $dt['href']; ?></li>
<?PHP endforeach; ?>
</ul>
</div>

実際に表示される結果につきましてはご想像の通りかとは思いますが、
よろしければお試しくださいw

用途や機能にもよりますが「軽く」使ってみた感覚としては、
その辺のhtml,xmlパーサに比べて非常に楽だと思います。
手順3の辺りに記述しましたが、where句の各条件は内部でeval実行されるため、
phpで許容される記述である必要がありますが、
それゆえに評価用関数など自由にカスタマイズできそうです。
(ライセンスもBSDらしいので気軽に手を入れたりして使っても問題なさそ)

Trackback URL

Comment & Trackback

No comments.

Comment feed

Comment





XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>