Authentication




Cancel OK
B!コメントする  2013-01-16 15:49:00 by old

RSSの判定

iGoogleの代わりを作る中でいがいとRSSやらATOMやらが規格に沿って書かれていないことがわかった。

当然そんなものをXMLとしてパースしようとするとエラーとなる。
そこでアドレスがRSSかそうでないかの判定としてヘッダーを見てみるとこにした。

function rsscheckheader($url)
{
streamcontextsetdefault(
array(
'http' => array(
'method' => 'HEAD'
)
)
);
$headers = get
headers($url);

return $headers;
}


こんな感じ。
でも試しにいろんなところのRSSやATOMを取ってみたら以外にもtextが多く必ずしもXMLでないことが判明。
これは使えない…

そこでRSSやATOMの最初にはXMLの宣言文が入っているのでそれでチェックすることにした。

function rsscheckstring($element)
{
if( preg_match( '/xml version="1.0" encoding=/i' , $element ) )
{
$result = "rss";
}
else
{
$result = "text";
}

return $result;
}


$elementに取ってきた情報を突っ込んで読ませるとRSSかそうでないかがわかる。

仕様や規格に沿ってないものの対応って意外と面倒くさい。


PHP  

  • コメント
  • コメントはまだありません