XMLファイルを配列としてとってこれる
XML_unserializeというライブラリを使用して
XMLファイルに含まれるデータをとってPHPで利用することが
できたのですが、ここで一つ大きな問題が発生しました。
XML_unserializeをつかうと
<XMLTAG>
取り出したいデータ
</XMLTAG>
↓
array(
[XMLTAG] = 取り出したいデータ
)
と、たしかに取り出したいデータを配列に変換することができます。
しかし、取り出したいデータの中にタグが含まれていた場合
例えば
<XMLTAG>
<div>取り出したいデータ</div>
</XMLTAG>
とかになっていると
<div>もXMLと判断されてしまって
必要なデータがうまくとってこれないのです。
正規表現でエスケープさせるにしても数が膨大ですし、
XMLタグ名に実際にHTMLで使われている
タグ名が使われているとも限りません。
どうすれば、
”XMLの中に入っているHTML等のタグを含むデータ”をうまくとってくることが
できるのでしょうか?
No.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で出力されるデータに
タグを含ませるという設計自体がナンセンスなのかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
VBA 空白セルを削除ではない方...
-
メモ帳(テキストデータ)をExc...
-
vba ドロップダウンリストの図...
-
配列でデータが入っている要素...
-
Accessで該当データにフラグを...
-
Excel vbaで、一行ずつコピーし...
-
[C言語] コメント文字列を無視...
-
合計3TBのデータのハッシュ値を...
-
0が含まれる幾何平均が「#NUM!」
-
VBA & easycomm で長時間測定の...
-
PLSQLで文字列置換
-
VBA 円グラフ 特定条件に一致し...
-
二分探索の平均探索回数
-
エクセルで2つの時系列のデー...
-
ユーザーフォームのテキストボ...
-
CString型の文字列連結について
-
カンマからスラッシュに
-
フォートランでの相互相関関数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
【プログラム】プログラミング...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
特定のデータの抽出方法を教え...
-
EXCELVBAでSQLserverからデータ...
-
エクセルで2つの時系列のデー...
-
多量のSUMIF式を軽くしたい
-
この行は既に別のテーブルに属...
-
C# ソケット通信でデータ受信時...
-
カンマからスラッシュに
-
S9タイプからXタイプにデータ...
-
[C言語] コメント文字列を無視...
-
ページ数を求めたい
-
ブレーカー落ちで壊れたりしな...
-
Accessで該当データにフラグを...
-
シーケンサにパソコンからアク...
-
CString型の文字列連結について
おすすめ情報