ウェブリブログのrss
ってさ、descriptionところ最初の1行しか出さないよね?
普通はそれでいんだけど、GREEとかで外部blogに指定すると最初の1行しか読めなくなるわけさ。パソコンからだったら「外部ブログへ移動」なんて感じのリンクがあるけど、携帯にはない。。。
ってことで、descriptionの中にウェブリブログに書いた本文を丸ごと入れてやるrssプロクシを作ってみた。
こんな感じ↓ めっちゃ簡単だね。昔phpでdomを使ったときはこんな簡単にはいかなかったし。あと、携帯だとaタグは無効にされちゃうみたいだね。そこら辺はどうしようか。。。。
現時点での問題はもう1つ。本文の中で table 使ってると致命的ってこと。ただ /td を探してるからね。これはあとで直さないと。tdではじめる部分を数えて、そのぶん /td を読み飛ばせばいいのかな?
ってかhtmlを簡単な方法でパースするほうほうってないのかな?JavaScriptのgetElementById見たいなのがあればめっちゃ楽チンなんだけど。
誰か教えて!
$rss = "http://gorakuru.at.webry.info/rss/index.rdf";
$extender = new rssExtender();
echo $extender->extend($rss);
class rssExtender{
function extend($rss){
return $this->convert($rss);
}
function getBodybyUrl($url){
$start = '<td id="blog-body">';
$stop = '</td>';
$charSet = 'Shift_JIS';
$content = mb_convert_encoding(file_get_contents($url), 'UTF-8', $charSet);
$content = mb_substr($content,
mb_strpos($content, $start, 0, 'UTF-8') + mb_strlen($start, 'UTF-8'),
mb_strlen($content, 'UTF-8'), 'UTF-8');
$content = mb_substr($content,
0,
mb_strpos($content, $stop, 0, 'UTF-8'),
'UTF-8');
$content = trim($content);
return $content;
}
function convert($rss){
$article = simplexml_load_file($rss);
foreach($article->item as $item){
$url = $item->link;
$description = '<a href="'.$url.'">オリジナル→'.$url.'</a><br /><br />';
$description .= $this->getBodybyUrl($url);
$item->description = $description;
}
return $article->asXML();
}
}
?>