Vosegus Sakura

  1. Home
  2. Vosegus Labs
  3. htmlSQL を試してみる

htmlSQL を試してみる

Vosegus Labs

htmlSQL とは
htmlSQL とは SQL のような構文から HTML にアクセスできる実験的な PHP のクラスです。 これは、あなたが特定の値を抽出するために、複合関数(正規表現)を書く必要はないことを意味します。

ローカルファイルから情報を取得

デモ

http://vosegus.org/blog/index.html より取得した情報

最新の記事

2012.2. 2
HTML5 と CSS3 の情報... ページの改修
2012.1.29
相互作用性の変化
2012.1.21
コンプリヘンシブプランニング
2012.1.15
Google+
2012.1.12
眼鏡と無職

過去の記事

PHP

$wsql = new htmlsql(); if (!$wsql->connect('file', '../../blog/index.html')){ print 'Error while connecting: ' . $wsql->error; exit; } if (!$wsql->query('SELECT text FROM * WHERE $id == "nav"')){ print "Query error: " . $wsql->error; exit; } foreach($wsql->fetch_array() as $row){ print $row['text']; }

このページの上部へ

外部ドメインから情報を取得

デモ

http://lab.komadoya.com/blog/2011/04/js-ie-attachevent.php より取得した情報

ということで、「IEさん、頼むよ...」っていう話。

JavaScriptのIE用イベントハンドラ「attachEvent/detachEvent」。これを使って呼び出したイベント内では、thisがwindowと解釈される落とし穴が。

下記のイベントをIEで実行すると、どうなるか、さっそく検証。

ボタンのラベル「送信する」がalertで返される、かと思いきや、結果は「undefined」。
これが、IEでattachEventした関数内では、「this」がwindowオブジェクトとなってしまうってこと。
つまり、detachEventもできず、はまるので注意。

じゃあ、どう書けばいいのか。

thisの代わりに「evt.srcElement」で、イベント発生元を取得すればよい。
と、ここまでがIEの話。

IE以外は、「addEventListener/removeEventListener」でイベントを制御するから、その振り分けをすればよい。クロスブラウザで動作する、最終的なコードは下記。

今回、ブラウザ依存の問題に結構はまってしまったけど、イベントのバブリングフェーズとかキャプチャフェーズについて勉強できたから、許す。(←何を?)

たまにネイティブのJavaScriptを書くと、ブラウザの差異を意識しなくていい「jQuery」のありがたみが身にしみますね。。。

thisを意図通り扱うため、上記のようにcallを使う方法もある。けど、この場合、無名関数でattachするから、detachEventできないので要注意です。

(参考サイト)
JavaScript のイベントハンドラ - daily dayflower
JavaScript メモ / チップス attachEvent() と addEventListener() [ ARTEMIS ]

*は必須項目です)

RSS

ページの先頭へ戻る

PHP

$wsql1 = new htmlsql(); if (!$wsql1->connect('url', 'String')){ print 'Error while connecting: ' . $wsql1->error; exit; } if (!$wsql1->query('SELECT text FROM p')){ print "Query error: " . $wsql1->error; exit; } foreach($wsql1->fetch_array() as $row1){ print $row1['text']; }

このページの上部へ

XML から情報を取得

デモ

http://vosegus.org/blog/atom.xml より取得した情報

  • HTML5 と CSS3 の情報... ページの改修
  • 相互作用性の変化
  • コンプリヘンシブプランニング
  • Google+
  • 眼鏡と無職
  • アプリケーションプラットフォーム
  • 別の場所にある今
  • ソーシャルネットワークシステム
  • ソーシャル Web
  • ソーシャル
  • アーキテクチャ
  • 持ち運ぶ Web から、いつもそこにある Web へ
  • Players
  • Web の環世界
  • モバイル版 Flash Player の開発中止から考えるキャリアプラン

PHP

$wsql2 = new htmlsql(); // connect to a File if (!$wsql2->connect('url', 'http://vosegus.org/blog/atom.xml')){ print 'Error while connecting: ' . $wsql2->error; exit; } if (!$wsql2->query('SELECT * FROM entry')){ print "Query error: " . $wsql2->error; exit; } foreach($wsql2->fetch_objects() as $obj){ $sub_wsql = new htmlsql(); $sub_wsql->connect('string', $obj->text); if (!$sub_wsql->query('SELECT * FROM *')){ print "Query error: " . $wsql2->error; exit; } $sub_wsql->convert_tagname_to_key(); $item = $sub_wsql->fetch_array(); print $item['title']['text']; } ?>

このページの上部へ