一回も披露したことのない豆知識

PHPでxmlのデータを条件を絞って表示したいと思っています。

xmlデータをPHPで作成し、結果表示するというのはサンプルを参考に作成できたのですが、条件の絞り方がわからず困っています。

<?php
$xmlstr = <<<XML
<?xml version="1.0" encoding="UTF-8" standalone='yes'?>

<item>
<name>牛肉</name>
<value>ヒレ</value>
<price>500</price>
</item>
<item>
<name>豚肉</name>
<value>ヒレ</value>
<price>400</price>
</item>
<item>
<name>豚肉</name>
<value>もも</value>
<price>300</price>
</item>
<item>
<name>鶏肉</name>
<value>もも</value>
<price>200</price>
</item>
・・・・・・
・・・
XML;
?>

というデータを
例えば<value>が(もも)に当てはまるものだけや、
<price>が400以下のものなど、条件を絞って表示したいと思っています。できれば、プルダウンのセレクトメニューを使用して条件をしぼりたいと思っています。

どうすればいいかまったくわかりません。
サンプルを見ながら手を加えるぐらいしかできないレベルです。
よろしければ教えてください。

また、作成したプログラムは携帯でも表示できますでしょうか?
セレクトメニューが携帯では表示できないことはしっていますので、チェックボタンなどを使って表示出来ればいいなと思っています。

A 回答 (2件)

#!C:/Environment/PHP/v5.2.4/php-cgi.exe


<?php
/*
Apache + PHP を使うのが初めてだったりして
インストールに一時間半くらい手間取った(汗
*/

/* 動かないと思ったら,そもそも XMLが間違ってんじゃねーか!(怒) */
$xmlstr = <<< XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<items>
<item>
<name>牛肉</name>
<value>ヒレ</value>
<price>500</price>
</item>
<item>
<name>豚肉</name>
<value>ヒレ</value>
<price>400</price>
</item>
<item>
<name>豚肉</name>
<value>もも</value>
<price>300</price>
</item>
<item>
<name>鶏肉</name>
<value>もも</value>
<price>200</price>
</item>
</items>
XML;
$doc = new DOMDocument();
$doc -> loadXML($xmlstr);
$xpath = new DOMXPath($doc);
$query = "/items/item/name[text() = '豚肉']"; /* 折角だから,XPathを利用してみました。name要素の子がテキストノードで,その内容が「豚肉」であるノードのリスト */
$NodeList = $xpath->evaluate($query,$doc);
header("Content-Type:text/plain;charset=UTF-8\n\n");
for($i = 0;$i < $NodeList->length ;$i++){ /* foreachとか使えそうだと思うけど,よくわからなかった(汗 */
print $NodeList->item($i)->textContent . "\n" ;
};
/* 個人的にはXSLTを使うほうが好きになれそう。でも調べる気力が湧かない */
?>
    • good
    • 0

DOMを使いましょう。


http://jp2.php.net/manual/ja/ref.dom.php
サンプルはここで聞くよりwebで漁ったほうが確実かつ豊富です。
行き詰ったら再質問するとよいでしょう。

>また、作成したプログラムは携帯でも表示できますでしょうか?
outputが携帯での表示に即したものであれば大丈夫です。
ただし、各社、各端末ごとに仕様がまったく違うのはご存知だと思います。
user-agentでキチンと振り分けさえすれば問題がないかと思われます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!