dポイントプレゼントキャンペーン実施中!

PHP---------------------------------------------

$xpath = "/qq:album/img";
$xpath = mb_convert_encoding($xpath,"UTF-8","SJIS");
$x_array = $ctx->xpath_eval($xpath);

$title_element = $x_array->nodeset[0];
$title = $title_element->get_attribute("title");
$title = mb_convert_encoding($title,"SJIS","UTF-8");

XML----------------------------------------------

<?xml version="1.0" encoding="EUC-JP"?>
<qq:album xmlns:qq="www.phpdom.com">
<img title="ABC">
<img title="DEF">
<img title="GHI">
<img title="JKL">
</qq:album>

こんにちは。

http://www.geocities.jp/xmlfirststep/dom/dom4.html

のサイトを参考に、上のようなスクリプトを書きました。albumという名の親ノードの下にあるimgノードの要素titleを抜き出すものです。このimgノードをXMLで複数つくり、phpでその長さを自動で返してもらおうと思ったのですがそのやり方がわかりません。
色々なサイトを回りましたが、キーワード「length」で探してもそれらしき情報がまったく見つかりません。

どうすればノードの長さを返してもらえるのでしょうか?

A 回答 (3件)

PHP4 は、使っていないので見当違いだったらごめんなさい。


$x_array->nodeset は、配列だから
$len = count($x_array->nodeset);
でいいんじゃないかと思います。
    • good
    • 0
この回答へのお礼

仰られたとおりに打ってみて、正常に動作しました!
まさにこれを探していました、本当にありがとうございます!

余談ですが、このようなphpのスクリプトってどんな種類があるのかとか、どこでお調べになっているのですか?参考までにお聞かせください。

僕は
http://jp2.php.net/manual/ja/
で探していたのですが、今までJavaScriptしか使ったことがないもので、配列の長さを返すにはlengthを使うものだと思っていたために、自力でこのcountという方法を見つけることが出来ませんでした。

本来の質問の答えはこれで出ていますが、最後に余談のほうの質問の答えを頂いてから締め切ろうと思います。
スクリプトについては本当にありがとうございました!

お礼日時:2006/06/14 14:38

参考URLを付けるのを忘れていました・orz


count
http://jp2.php.net/manual/ja/function.count.php

DOMNodeList の length プロパティ
http://jp2.php.net/manual/ja/ref.dom.php
上記の DOMNodeList の部分
    • good
    • 0
この回答へのお礼

お礼が遅れて済みませんでした。
やはり本である程度探してからの方が良いみたいですね。
どうもありがとうございました!

お礼日時:2006/06/21 00:26

#1>

http://jp2.php.net/manual/ja/ で探していたのですが
私もそうです。
でも、あのサイト、文法要素的なことを探そうとした時とか
どこ??
ってなることがありますね。^^;
私の場合、使っている回線が細い(64K)ので、資料を探してサイトを渡り歩くということは、ほとんどしません。
大抵は、本で資料を持っていてそこをまず調べます。

ちなみに、PHP5 では、DOMの準拠がもっと良いので、
$dom = new DOMDocument;
$dom->load("data.xml");
$xpath = new DOMXPath($dom);
$nodeSet = $xpath->query("XPathの文字列");
print "マッチノード数:$nodeSet->length\n";
の様にlength を使います。
逆にこの場合、単なる配列ではないので count は使えません。
    • good
    • 0

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