RSS フィードは単なる XML であるため、最初に行うことは、使用したい言語の XML パーサーを見つけることです。
PHP にはSimpleXMLが組み込まれており、高速で使いやすいです。
これを使用して、このようにすべてのリンクを引き出します。
foreach ($xml->channel->item as $key => $item) {
$link = $item->link
}
これは簡単に理解できます。ルート XML 要素は<channel>
、すべてのニュース<item>
タグを含む内部にあります。したがって、それらをループして、各子<link>
要素を引き出します。
それから、そこまでたどり着いたら、あなたのためにすべてを行うのにそれほど時間はかからないことに気付きました. http:// を空の文字列に置き換えて、リンクをドメインだけに取り除きます。次に、区切り文字として / を使用して文字列を分解します。これを行うと、文字列がスラッシュの間から引き出されるチャンクに分割されます。したがって、最初のチャンクはドメインです。
<?php
$url = 'http://pipes.yahoo.com/pipes/pipe.run?_id=e9fdf79f13be013e7c3a2e4a7d0f2900&_render=rss';
$xml = simplexml_load_file($url);
foreach ($xml->channel->item as $key => $item) {
$link = $item->link;
$link = str_replace("http://", "", $link);
$parts = explode('/', $link);
$domain = $parts[0];
print($domain . "<br/>");
}
?>
このコードにより、次の出力が得られます。
www.ft.com
www.dailystar.com.lb
www.ft.com
www.ft.com
www.ft.com
www.ft.com
www.dailystar.com.lb
www.bbc.co.uk
....
次に、PHP の switch ステートメントを使用して、各リンクに対して目的の結果を取得します。そのようです:
switch($domain) {
case "www.bbc.co.uk":
// Do BBC stuff
break;
case "www.dailystar.com.lb":
// Do daily star stuff
break;
default:
// Do something for domains that aren't covered above
break;
}
幸運を!