問題
解決策
PHPでのXMLファイルの読み込み
PHPでXMLファイルを読み込み、表示させる方法をご紹介します。
XMLファイルの内容は、以下のようなお知らせのデータを想定しています。
news.xml
<?xml version="1.0" encoding="UTF-8"?>
<main>
<news>
<item>
<times>2020年00月00日</times>
<title>お知らせタイトル</title>
<content>お知らせ本文が入ります。お知らせ本文が入ります。お知らせ本文が入ります。</content>
<cat>news</cat>
<catlabel>お知らせ</catlabel>
<linkurl>http://keylopment.com/</linkurl>
</item>
<item>
<times>2020年00月00日</times>
<title>お知らせタイトル</title>
<content>お知らせ本文が入ります。お知らせ本文が入ります。お知らせ本文が入ります。</content>
<cat>event</cat>
<catlabel>イベント</catlabel>
<linkurl>http://keylopment.com/</linkurl>
</item>
</news>
</main>
「simplexml_load_file」関数でXMLファイルを読み込む。
PHPでXMLファイルを読み込むには、「simplexml_load_file」関数を使用します。
<?php
$xml = simplexml_load_file("ファイルパス/data/news.xml");
?>
データの出力を「foreach」で行う。
格納した配列データを元に、出力を行います。
<section class="news-box section">
<h2 class="titles title-level01">お知らせ</h2>
<?php
$count = 0;
foreach($xml->news->item as $item):
$count++;
endforeach;
if($count == 0):
?>
<p>
お知らせはありません。
</p>
<?php
else:
?>
<dl class="news-list clearfix">
<?php
foreach($xml->news->item as $item):
?>
<dt>
<span class="times"><?php echo $item->times; ?></span>
<span class="cat <?php echo $item->cat; ?>"><?php echo $item->catlabel; ?></span>
</dt>
<dd>
<p class="titles"><?php echo $item->title; ?></p>
<div class="text">
<?php if(!empty($item->linkurl)): ?>
<a href="<?php echo $item->linkurl; ?>" target="_blank">
<?php echo $item->content; ?>
</a>
<?php else: echo $item->content; endif; ?>
</div>
</dd>
<?php
endforeach;
?>
</dl>
<?php
endif;
?>
</section><!-- news-box -->
データを出力していく流れ
XMLデータ内のnewsタグ内のitemタグ($xml->news->item)に対して「foreach」で繰り返し処理
- $item->各タグ名として、項目の順番を気にせずに出力が可能なので、適宜好きな形にマークアップ
参考ページ
【PHPでxmlファイルを読み込んでみる | Tips Note by TAM】
https://www.tam-tam.co.jp/tipsnote/program/post4168.html
【【PHP入門】完全マスター!XMLを自由自在に扱う方法まとめ | 侍エンジニア塾ブログ(Samurai Blog) – プログラミング入門者向けサイト】
https://www.sejuku.net/blog/53590
コメント