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みたいにアクセスできると便利かも)