PHPについての質問です。


$xml="
<root>
 <Space>
   <Id>2075028953</Id>
   <Depth>2</Depth>
   <Title>コンテスト</Title>
 </Space>
 <Category>
  <Count>2</Count>
  <Item>
    <Id>2075028959</Id>
    <Title>グルメ、ドリンク</Title>
  </Item>
  <Item>
    <Id>2075028966</Id>
    <Title>音楽</Title>
  </Item>
 </Category>
 <Site>
  <Item>
    <Id>2078063954</Id>
    <Title>建築</Title>
  </Item>
 </Site>
</root>
";

のようなXMLで、preg_match_allで<Item>要素ごとに取得しようと以下の関数で試みたのですが
取得できるものと出来ないものが存在します。
例えば<Item></Item>で囲まれているものが19個あったとすると4個しか配列関数に入っていません。
考えられる理由は何があるのでしょうか?


preg_match_all("'<Item>(.*?)</Item>'", $xml, $val);


説明がうまく出来ないのですが
分かって頂ける方がいましたら
宜しくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/11/27 23:09:17
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント300pt

http://sandman.s6.xrea.com/nucleus/item-62.html

"/パターン/g"  //複数行を調べる
"/パターン/s"  //改行文字を無視し、1行とみなして調べる


改行に対する対応が必要なのかもしれませんね。

id:black_kenchan

ご指摘通り改行が原因だったみたいです。
おかげで思った通りに出来ました。
本当に有難う御座います。
また、機会がありましたら宜しくお願いします。

2012/11/27 23:08:46

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません