htmlSQL サンプル(7) – 配列構造の変換 -

RSSとXMLファイルを扱う場合。
さらに、配列の構造を変更しアクセスしやすくする

$wsql->query('SELECT text FROM item')
$sub_wsql->query('SELECT * FROM *');

        $sub_wsql->convert_tagname_to_key();

        /* this function converts an array that looks like this:

            $array[0]['tagname'] = 'title';
            $array[0]['text'] = 'example 1';

            $array[1]['tagname'] = 'link';
            $array[1]['text'] = 'http://www.example.org/';

            $array[2]['tagname'] = 'description';
            $array[2]['text'] = 'description bla';
            $array[2]['fulltext'] = '1'; // additional attribute

            ->; to:

            $array['title']['text'] = 'example 1';

            $array[1]['link']['text'] = 'http://www.example.org/';

            $array[2]['description']['text'] = 'description bla';
            $array[2]['description']['fulltext'] = '1'; // additional attribute

            this makes the array easier to access

        */

—–サンプルスクリプト—-

connect('url', 'http://example.com/rss.php')){
        print 'Error while connecting: ' . $wsql->error;
        exit;
    }

    if (!$wsql->query('SELECT text FROM item')){
        print "Query error: " . $wsql->error;
        exit;
    }

    foreach($wsql->fetch_objects() as $obj){

        $sub_wsql = new htmlsql();
        $sub_wsql->connect('string', $obj->text);

        if (!$sub_wsql->query('SELECT * FROM *')){
            print "Query error: " . $wsql->error;
            exit;
        }

        $sub_wsql->convert_tagname_to_key();
        $item = $sub_wsql->fetch_array();

        print "";
        print $item['title']['text'] . "
n"; } ?>

1. $wsql = new htmlsql();
で、htmlsqlクラスのオブジェクトを作成し、$wsqlに代入。

2. $wsql->connect(‘url’, ‘http://example.com/rss.php’)){
で、第二引数をURLとしてアクセスします。
今回はrssのページを対象としている。

3. $wsql->query(‘SELECT text FROM item’);
で、2.で得たURLに対しquery()の第一引数で指定したSQL文を実行します。
ここでは、itemタグから内容(text)だけを取り出します。

4. for($wsql->fetch_objects() as $obj)
で、3.で得たSQLクエリの結果の各タグについて処理をしていきます。

5. $sub_wsql = new htmlsql();
3.で得たタグ毎に新たにhtmlsqlクラスのオブジェクトを作成して$sub_wsqlに代入します。

6. $sub_wsql->connect(‘string’, $obj->text);
3.で得たタグの内容(text)の文字列に対してアクセスします。

7. $sub_wsql->query(‘SELECT * FROM *’);
3.で得たタグ内のすべてのタグのすべての情報を得ます。

8. $sub_wsql->convert_tagname_to_key();
$sub_wsqlオブジェクトのアクセスキーをtagnameとする。

9. $item = $sub_wsql->fetch_array();
[アクセスキー変換前]
print “<a href=”” . $item[1]['text'] . “”>”;
print $item[0]['text'] . “</a><br/>n”;
[アクセスキー変換後]
print “<a href=”” . $item['link']['text'] . “”>”;
print $item['title']['text'] . “</a><br/>n”;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>