#はじめに
最近PythonやPHPでXMLなどをパースすることについてちょっと勉強しているので、記録。今回はPHP版。
#利用している関数
今回は『一手間必要。PHPでのSimpleXML関数のパース処理
』というサイトを参考にさせていただいて、simplexml_load_file()
という関数を利用してXMLからデータを取得しました。
#サンプルコード
今回はアイドルグループ「乃木坂46」さんが公開しているブログに関するXML(http://blog.nogizaka46.com/atom.xml)をパースして、タイトル、ブログへのリンク、公開日、更新日、ブログ内容を取得します。
get_xmldata.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>XMLをパース|FantmSite</title>
</head>
<body>
<?php
$data = array();
$nogiblog_xml = simplexml_load_file('http://blog.nogizaka46.com/atom.xml');
foreach($nogiblog_xml->entry as $item){
$x = array();
$x['title'] = (string)$item->title;
$x['link'] = (string)$item->link;
$x['published'] = (string)$item->published;
$x['updated'] = (string)$item->updated;
$data[] = $x;
}
?>
<pre><?php var_dump($data);?></pre>
</body>
</html>
出力結果の例としては以下のような感じになります。
array(165) {
[0]=>
array(5) {
["title"]=>
string(37) "アリスにデビルにメ イド。"
["link"]=>
string(0) ""
["published"]=>
string(20) "2014-10-20T15:00:02Z"
["updated"]=>
string(20) "2014-10-20T16:01:08Z"
}
[1]=>
array(5) {
["title"]=>
string(26) "ひめたん-OoO-その490"
["link"]=>
string(0) ""
["published"]=>
string(20) "2014-10-20T14:45:02Z"
["updated"]=>
string(20) "2014-10-20T16:01:00Z"
}
}
実際の出力結果について
実際に出力した結果は『XMLをパース|FantmSite』で(2014.10.21現在)公開しました。(公開を終了しました)
上記のURL先のコードは以下のようになっています。
ブログの内容を$x['content'] = (string)$item->content;
と追加することで取得しました。
xmltest.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>XMLをパース|FantmSite</title>
</head>
<body>
<h3><a href="http://www.nogizaka46.com/">乃木坂46</a>さんのブログのXMLをパースした結果</h3>
<hr>
<?php
$data = array();
$nogiblog_xml = simplexml_load_file('http://blog.nogizaka46.com/atom.xml');
foreach($nogiblog_xml->entry as $item){
$x = array();
$x['title'] = (string)$item->title;
$x['link'] = (string)$item->link;
$x['published'] = (string)$item->published;
$x['updated'] = (string)$item->updated;
$x['content'] = (string)$item->content;
$data[] = $x;
}
?>
<pre><?php var_dump($data);?></pre>
</body>
</html>