RSS1.0でdc:dateを取得する

    $rss = simplexml_load_file("RSS1.0のURL");
    $array = array();
    foreach ($rss->item as $item) {
        $array[] = array('title'=>$item -> title,'url' => $item -> link,'date' => strtotime($item -> pubDate));
    }

最初こんな感じで、RSSのデータを取得しようとしていたのですが、 dateの値がとれませんでした。

ソースを確認してみると日付が入っているのは、 pubDateはなく、dc:dateでした。

タグがわかったところで、dc:dateの値をとろうと、 とりあえずvar_dumpしてみたのですが、なぜかdc:dateの値がとれません。

調べてみると、「:」は名前空間を意味しているため、 「:」が含まれていると値の取得ができないそうです。


スポンサーリンク





childrenメソッドを呼ぶ

これを解決するには、 childrenメソッドの引数に下記URLを指定します。

http://purl.org/dc/elements/1.1/

具体的なソースはこんな感じです。

    $rss = simplexml_load_file("RSS1.0のURL");
    $array = array();
    foreach ($rss->item as $item) {
        $dc = $item->children('http://purl.org/dc/elements/1.1/');
        $array[] = array('title'=>$item -> title,'url' => $item -> link,  'date'=> strtotime($dc->date));
    }