2011-01-16 9 views
1

クライアントからのXMLファイルがありますが、フォーマットが正しくありません。このxmlはフラッシュから生成されたもので、タグを追加するためのソースファイルはありません。PHPを使用したフォーマットされていないXML構文解析

PHPでxmlファイルを開ける方法はありますか?preg_replaceタグは「何か」と表示され、出力が表示されます。

私はちょうどphpファイルを開いて内容を読むことを試み、それは出力を示しますが、そのような改行はありません。

XMLを読み取り、その場でタグを変更してコンテンツを表示するためのファイルを読み取る方法はありますか?

例xmlコンテンツ - 基本的に情報は自分のタグですが、 ""のような親タグはありません。どのように私はこれらの情報をすべて表示することができますか?私は
[16:38]に
YYYYYYに

XXXXXXを表示したい
[16:38] mr.abc:hey
xxxxxxのうち

<?xml version="1.0" encoding="UTF-8"?> 
<in>---xxxxxx in---</in> 
<in>---yyyyyy in---</in> 
<time>[16:38]</time> <user>mr.xyz</user><separator>:</separator> </content>hello</content> 
<time>[16:38]</time> <user>mr.abc</user><separator>:</separator> </content>hey</content> 
<out>---xxxxxx out--</out> 
+0

もう一度やりたいことは、strip_tags()だけです。 – dqhendricks

+0

ありがとうございました。最後にファイルオープンを行い、foreachを使用して
を追加しました。これは今のところうまくいきます。再度、感謝します。あなたのおかげで – Jay

答えて

0

あなたが使用することができjQuery- mr.xyz:hello値を取得するライブラリのような。これは1つですhttp://code.google.com/p/phpquery/wiki/Basics

+0

...これらを試して、ここに投稿しておきます。ありがとう。 – Jay

0

あなたは何かをすることができます - そして、コンテンツタイプヘッダーをPHP関数header('Content-type: text/xml');を使ってXMLに設定し、ブラウザはそれをXML文書として提供します。

function replaceTag($tag, $new, $content) 
{ 
    if (!preg_match('/\<'.$tag.'(.*?)\>(.*?)\<\/'.$tag.'\>/i', $content)) 
    { 
     return FALSE; 
    } 
    return preg_replace('/\<'.$tag.'(.*?)\>(.*?)\<\/'.$tag.'\>/i', "<{$new}$1>$2</{$new}>", $content); 
} 

echo replaceTag('in', 'newIn', '<in>123</in>'); // Should output <newIn>123</newIn> 

EDIT: 私は質問を誤解しているかもしれません。 XML出力のデータを使用したい場合は、PHPのsimplexmlメソッドを参照してください。それらの詳細についてはこちらをご覧ください。 http://php.net/simplexml

0

xml解析にregexを使用しないでください。

いずれかPHPSのSimpleXMLクラスを使用し、

http://us3.php.net/manual/en/simplexml.examples-basic.php

XMLが整形、またはあなたは、より高度な機能を必要とするPHPS DOMクラスを使用していない場合、

http://www.php.net/manual/en/book.dom.php

のいずれかこれらのうちの1つはxmlを解析したり、編集したり、適切な形式のファイルで出力したりすることができます。

関連する問題