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++; } } ?>
コメント