16
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPでXMLをパース

Last updated at Posted at 2014-10-20

#はじめに
最近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>
16
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?