• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP ”XML_unserialize”でXMLを配列に変換したのですが・・・)

PHPのXML_unserialize関数を使用してXMLファイルを配列に変換する方法

このQ&Aのポイント
  • PHPのXML_unserialize関数を使用すると、XMLファイルを配列に変換することができます。
  • しかし、XMLファイルの中にHTMLタグが含まれている場合、正規表現でエスケープさせることが困難です。
  • HTMLタグを含むデータを正しく取得するためには、別の方法を検討する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

「取り出したいデータ」がどのタグ(要素)にあるのか事前にわからないなら、シリアライズしてして配列にいれてしまうと、正規表現でサーチするしかないですね。 サーチする必要があるなら、XML本来の利点を生かすためにもXMLのまま扱ってDOM XML関数とか、SimpleXML関数を使うか、XMLパーサー関数で、 要素のハンドラー関数を用意して必要なデータを探します。

yuzuru0024
質問者

お礼

回答ありがとうございます。 さらに、いろいろ調べた結果 $match = "/(<)(((?![A-Z\/\?])|\/(?![A-Z]))[^\/^>]*)(\/?>)/e"; $replace = "'&lt;\\2&gt;'"; $XMLSRC = preg_replace($match, $replace, $XMLSRC); という正規表現で取り除けることが分かりました。 XMLが <Xml>、<Image>等と、要素名の一文字目が 大文字のアルファベットで書かれていれば それを利用して、XMLかどうか判別するというものです。 当然抽出文字列の中に<Div>とかはいってたら それも、対象になってしまうので苦肉の策もいいところですが とりあえず、これでいってみます。 が、外部からとろうとするデータに不定期にタグが入っていたりすると データの取得に不具合が生じるというのは どう考えても、使いにくいので、何か対策はあるのでしょう。 そもそも、XMLで出力されるデータに タグを含ませるという設計自体がナンセンスなのかもしれません。

関連するQ&A