- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP ”XML_unserialize”でXMLを配列に変換したのですが・・・)
PHPのXML_unserialize関数を使用してXMLファイルを配列に変換する方法
このQ&Aのポイント
- PHPのXML_unserialize関数を使用すると、XMLファイルを配列に変換することができます。
- しかし、XMLファイルの中にHTMLタグが含まれている場合、正規表現でエスケープさせることが困難です。
- HTMLタグを含むデータを正しく取得するためには、別の方法を検討する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「取り出したいデータ」がどのタグ(要素)にあるのか事前にわからないなら、シリアライズしてして配列にいれてしまうと、正規表現でサーチするしかないですね。 サーチする必要があるなら、XML本来の利点を生かすためにもXMLのまま扱ってDOM XML関数とか、SimpleXML関数を使うか、XMLパーサー関数で、 要素のハンドラー関数を用意して必要なデータを探します。
お礼
回答ありがとうございます。 さらに、いろいろ調べた結果 $match = "/(<)(((?![A-Z\/\?])|\/(?![A-Z]))[^\/^>]*)(\/?>)/e"; $replace = "'<\\2>'"; $XMLSRC = preg_replace($match, $replace, $XMLSRC); という正規表現で取り除けることが分かりました。 XMLが <Xml>、<Image>等と、要素名の一文字目が 大文字のアルファベットで書かれていれば それを利用して、XMLかどうか判別するというものです。 当然抽出文字列の中に<Div>とかはいってたら それも、対象になってしまうので苦肉の策もいいところですが とりあえず、これでいってみます。 が、外部からとろうとするデータに不定期にタグが入っていたりすると データの取得に不具合が生じるというのは どう考えても、使いにくいので、何か対策はあるのでしょう。 そもそも、XMLで出力されるデータに タグを含ませるという設計自体がナンセンスなのかもしれません。