nazolabo

フリーランスのWebエンジニアが近況や思ったことを発信しています。

SimpleTag

HTMLとかのデータを解析。
tag.HtmlParserはテンプレート向けなので(多分)、通常のHTMLを解析してあれこれする場合はこっちを使う。
例えば前回の、

<?php
require_once("./__init__.php");
Rhaco::import("tag.HtmlParser");
Rhaco::import("tag.feed.FeedParser");

$feed = FeedParser::read("http://d.hatena.ne.jp/nazone/rss");

$htmlParser = new HtmlParser();
// $htmlParser->setVariable("channel",$feed->getChannel());
$htmlParser->setVariable("items",$feed->getItem());
$htmlParser->write("feed.html");

をSimpleTagで書き直すと

<?php
require_once("./__init__.php");
Rhaco::import("tag.HtmlParser");

Rhaco::import("network.http.Browser");
Rhaco::import("tag.data.SimpleTag");

$browser = new Browser();
$rss = StringUtil::encoding($browser->get("http://d.hatena.ne.jp/nazone/rss"));
$tag = new SimpleTag();
$tag->set($rss);
$items = array();
foreach ($tag->getIn("item") as $item) {
  $items[] = array("title"=>$item->getInValue("title"),"link"=>$item->getInValue("link"),"description"=>$item->getInValue("description"));
}

$htmlParser = new HtmlParser();
$htmlParser->setVariable("items",$items);
$htmlParser->write("feed.html");

となる。配列になるので、テンプレート側も、$item.link→$item['link']とかにする必要がある。(個人的にはテンプレート側は配列でも$item.linkみたいにアクセスできると便利かも)