使用PHP从XML中提取包含换行符的文本

时间:2010-12-25 14:39:22

标签: php html xml text

从XML文件中提取文本时

Here is some text before the
<br/><br/>
line break.

在PHP中,

echo $value->description;

我得到了文字,但没有包含br标签。我该如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:1)

根据经验,您甚至不应在<br/>标签后获得任何文字。原因是因为XML中的所有文本节点都假设具有&lt;和&gt;替换为他们的htmlentity()对应物,并用htmlspecialchars()替换所有其他特殊字符。我相当肯定它会导致你的XML DOM解析器出错,或者至少把它作为一个新节点,我认为是一个带换行符的空文本节点。

唯一的解决方案是将XML存储到字符串中,使用正则表达式取出<br/>标记(以及所有&lt;和&gt;标记),然后将其替换为我在上面提到的正确值。

或者,您可以阅读有关CDATA here的内容,然后转义标签,但如果您是创建该XML文件的那个,那就是这样。您应该通知网站管理员您从中获取XML的站点,XML是否被错误地创建。

答案 1 :(得分:0)

首先,您可以将XML文件读取为一个字符串,然后将“&lt; br /&gt;”替换为“&”。现在,您可以将替换的字符串作为XML数据加载,并使用XML DOM进行处理。