はてなアンテナをMovable Typeで表示

このblogでは、コトウユウキさんのはてなアンテナ組み込みスクリプトを使ってはてなアンテナを表示しています。

ですが、kiyo風呂が表示されないので不思議に思っていましたが、スクリプトを見ていたところ正規表現に問題がありました。

コメントが入っていると以下のように、リンクの次にコメントが入ります。

<!--HINA_OK 2007/03/19 01:17:37 [0]--><A HREF="http://ameblo.jp/janne-kiyo/">kiyo風呂</A>JanneDaArc(ジャンヌダルク)kiyo オフィシャルブログ 『kiyo風呂』 Powered by アメブロ <br>

なので正規表現でリンクの外に(.*)に入れて任意の文字列を許可するようにしました。

preg_match("#<!–HINA_OK (\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):(\d{2}).*?–><a href=\"(.+?)\">(.+?)</a><br>#i", $var, $t);

preg_match("#<!–HINA_OK (\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):(\d{2}).*?–><a href=\"(.+?)\">(.+?)</a>(.*)<br>#i", $var, $t);

に変更しました。参考までにスクリプトを全部載せておきます。

<?php
ob_end_flush();
$HA_COMMENT_ENABLE = false;
$HA_ENCODING = "utf-8"; // UTF-8で保存
$HA_ID = "makoto_kw";
$HA_DURATION = 12 * 60 * 60;
$hina = file("http://a.hatena.ne.jp/".$HA_ID."/source?mode=hina");
$uplink = '<span class="url-status">new!</span>';
echo "<!--\n";
echo "drawHatena( '<div class=\'blogrollmain\'>'+";
echo "'<ul>'+";
foreach ($hina as $var) 
{
preg_match("#<!--HINA_OK (\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):(\d{2}).*?--><a href=\"(.+?)\">(.+?)</a>(.*)<br>#i", $var, $t);
list(,$dy,$dm,$dd,$dh,$di,$ds,$uri,$blog,$comment) = $t;
$utc = mktime($dh,$di,$ds,$dm,$dd,$dy);
$update = date("H:i:s", $utc)." [JST] on ". date("l, F d", $utc);
$new = time() - $utc;
$name = @mb_convert_encoding($blog, $HA_ENCODING, "auto");
if ($HA_COMMENT_ENABLE && $comment != null) {
$comment = @mb_convert_encoding($comment, $HA_ENCODING, "auto");
$comment = '<span class="ahanate-comment">' . $comment . '</span>';
} else {
$comment = "";
}
if ($new < $HA_DURATION) {
echo "'<li><a href=\'$uri\' title=\'Last updated: $update\' target=\'_blank\' >$name</a>' + '$comment' + '$uplink' + '</li>' +";
} else {
echo "'<li><a href=\'$uri\' title=\'Last updated: $update\' target=\'_blank\' >$name</a>' + '$comment' + '</li>' +";
}
}
echo "'</ul>'+";
echo "'</div>' + ''); \n";
echo "function drawHatena(s){ document.write(s); }\n";
echo "// -->";
?>