我有一个名为data_out.xml的文件,其中包含以下xml代码:
<?xml version="1.0" ?>
- <allproperty>
- <aproperty>
<postcode>ha15rs</postcode>
<price>250</price>
<imagefilename>home2.gif</imagefilename>
<visits>2</visits>
</aproperty>
- <aproperty>
<postcode>ha36gs</postcode>
<price>150</price>
<imagefilename>home3.gif</imagefilename>
<visits>1</visits>
</aproperty>
- <aproperty>
<postcode>ha27se</postcode>
<price>300</price>
<imagefilename>home4.gif</imagefilename>
<visits>4</visits>
</aproperty>
- <aproperty>
<postcode>ha4678</postcode>
<price>200</price>
<imagefilename>home5.gif</imagefilename>
<visits>5</visits>
</aproperty>
</allproperty>
我想写一个PHP脚本,输出没有标签的数据,我不担心格式化,只是输出,欢呼谢谢 附:即时通讯使用simplexml
编辑:
这是错误的还是正确的:
<?php
$fp = fopen('data_out.xml', 'r');
echo preg_replace('/<[^>]+>/', '', $fp);
?>
答案 0 :(得分:4)
实际上内置PHP function for stripping tags名为... strip_tags()
。
echo strip_tags($xml_string);
无需记住正则表达式!
编辑:仅供后人使用,这是您的示例XML http://ideone.com/hQS4P
的输出答案 1 :(得分:2)
这对于你现在正在尝试做的事情来说是一个巨大的过度杀伤,但是如果你想要在以后更好地格式化你的数据,你可能想要考虑XSLT。这就产生了你现在正在寻找的东西:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="text()">
<xsl:variable name="clean" select="normalize-space(.)"/>
<xsl:if test="string-length($clean) > 0">
<xsl:value-of select="$clean"/><xsl:text> </xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
答案 2 :(得分:1)
如果您只想删除所有标记,并且如果 XML完全有效,则可以使用正则表达式。
将<[^>]+>
替换为''
。
如果XML在属性中可能包含>
个字符,则无效;你需要一个更复杂的正则表达式,它能识别字符串。
编辑:例如:
echo preg_replace('/<[^>]+>/', '', $someXML);