XMLでは「:(コロン)」は名前空間(namespace)を意味している為、「RSS1.0」のデータをPHPのSimpleXML関数で取り込むと、「dc:date」要素を取得する事が出来ません。
「RSS1.0」のデータをPHPのSimpleXML関数で取得する方法は下記の通りです。
PHPのSimpleXML関数でRSS1.0の「dc:date」を取得する方法
PHPのSimpleXML関数で、ある名前空間に属するnodeを取得するには、その名前空間を定義しているURLを引数として渡し、「childrenメソッド」を呼ぶ必要があります。
「childrenメソッド」は上記の通り、引数に名前空間を指定する必要があります。「RSS 1.0」では、「dc」の名前空間は
xmlns:dc=”http://purl.org/dc/elements/1.1/”
と定義されているので、これを引数として指定します。
「childrenメソッド」で子ノードを取得後、「date」を指定することで、「dc:date」要素を取り出すことができます。
<?php
$rss_url = 'RSS1.0のURL';
$i = 0; //カウント用変数
if ($fileContents = file_get_contents($rss_url))
{
$xml= new SimpleXMLElement($fileContents);
foreach($xml->item as $row){
$blog_data[$i]['title'] = (string)$row->title;
$blog_data[$i]['link'] = (string)$row->link;
$blog_data[$i]['description'] = strip_tags((string)$row->description);
$blog_data[$i]['description'] = trim($blog_data[$i]['description']);
$dc = $row->children('http://purl.org/dc/elements/1.1/');
$blog_data[$i]['date'] = date('Y.m.d H:i:s', strtotime($dc->date));
$blog_data[$i]['time_stamp'] = (int)strtotime($dc->date);
$i++;
}
}
?>



コメント