为什么saveXML创建` `linebreaks?

时间:2013-10-04 14:56:41

标签: php xml dom domdocument line-breaks

我正在使用它:

foreach ($paragraph->childNodes as $child) {
        $value .= $paragraph->ownerDocument->saveHTML($child);
    }

问题是我的$value
在原始文档中我有一个换行符。

以下是源HTML的一部分:

<html>
  <head>
    <meta http-equiv=Content-Type content="text/html; charset=utf-8">
    <meta name=Generator content="Microsoft Word 12 (filtered)">
      <title>SomeTitle</title>
  </head>
  <body lang=EN-US link=blue vlink=purple>
    <div class=WordSection1>
    <p class=3abstract><b>Abstract:</b> Five new anthranilic acid derivatives.</p>
  </body>
</html>

你以前见过这个吗?

2 个答案:

答案 0 :(得分:1)

&#13;是“回车”的十进制HTML实体表示,因此它在输出中完全没问题。

要输出实际的回车符,请尝试将父文档的输出编码设置为UTF-8:$paragraph->ownerDocument->encoding = 'UTF-8'

答案 1 :(得分:0)

Alf无法阐明如何来定义通过new DOMDocument完成的编码。反过来,这会删除&#13;数字实体:

   $dom = new DOMDocument('1.0', 'UTF-8');//<?xml version="1.0" encoding="UTF-8"?>
   $dom->loadHTML($xml);
   $xml = $dom->saveXml($dom);

根据他的代码,我得到了类似的错误:

试图修改非对象的属性'ownerDocument'

或者,您可以使用以下字符串替换:

$xml = str_ireplace("\r\n", "\n", $xml);