HtmlParserを継承したクラスで、_execなんとか(なんとかは何でもいいらしい)ってメソッドを作ると、それが構文解析中に呼ばれる。
<?php Rhaco::import("tag.HtmlParser"); class MobileHtmlParser extends HtmlParser { function MobileHtmlParser($filename=null) { parent::HtmlParser($filename); } function _exec3004_Url($src) { $tag = new SimpleTag(); while($tag->set($src,$this->_getTagName("url"))){ $href = $tag->getParameter("href", ""); $session_name = htmlspecialchars( session_name() ); $session_id = htmlspecialchars( session_id() ); if (preg_match("/\?/", $href)) { if (preg_match("/&$/", $href)) { $href = substr($href, 0, length($href) - 1); } $href .= "&".$session_name."=".$session_id; } else { $href .= "?".$session_name."=".$session_id; } $src = str_replace($tag->getPlain(),'<a href="'.$href.'">'.$tag->getValue().'</a>',$src); } return $src; } /* 一部略 */
とかってのをhttp://highfreq.net/dev/itwitter.zipでやってる。これだと
<rt:url href="http://example.com/sample.php">リンクです</rt:url>
とテンプレートに記述すると
<a href="http://example.com/sample.php?PHPSESSID=ABCDEFG1234567">リンクです</a>
に変換されるようになる。
もう少し簡単に拡張できる仕組みがあるといいなー。