PHPのSimpleXML関数でRSS1.0の「dc:date」を取得する方法

自由が丘で働くWeb屋のブログ

PHPのSimpleXML関数でRSS1.0の「dc:date」を取得する方法

date

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++;
	}
}
?>
 
カテゴリー:Webシステム開発
タグ:, ,
2010年9月9日 22時31分
 

関連記事

 

コメントを書く

(C) 自由が丘で働くWeb屋のブログ