ウェブリブログの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();

  }

}

?>