我有一个来自客户端的xml文件,但格式不正确。这个xml是用flash生成的,我没有源文件来添加任何标签。
有什么方法可以在PHP中打开xml文件,preg_replace
带有“something”的标签并显示输出。
我尝试只打开php文件并阅读内容并显示输出,但没有像这样的换行符。
有没有办法读取xml并动态修改标签然后只是读取文件来显示内容?
示例xml内容 - 所以基本上信息在它自己的标签中,但没有像“”这样的父标签。知道如何才能显示所有这些信息?我想要显示
xxxxxx in
yyyyyy in [16:38] mr.xyz:hello
[16:38] mr.abc:hey
xxxxxx out
<?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 :(得分:0)
您可以使用类似jQuery的库来获取值。这是一个http://code.google.com/p/phpquery/wiki/Basics
答案 1 :(得分: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>
修改强>
我可能误解了这个问题。如果您希望对XML输出的数据执行某些操作,我会引用PHP中的simplexml
方法。有关它们的更多信息可以在这里找到; http://php.net/simplexml
答案 2 :(得分:0)
不要使用正则表达式进行xml解析。
使用PHP的SimpleXML类,
http://us3.php.net/manual/en/simplexml.examples-basic.php
如果xml格式不正确,或者您需要更高级的功能,请使用PHP DOM类,
http://www.php.net/manual/en/book.dom.php
其中一个可以解析xml,进行编辑,和/或在格式良好的文件中输出。