【问题标题】:PHP DOMDocument->getElementByID adding  in place of empty <span>PHP DOMDocument->getElementByID 添加  代替空 <span>
【发布时间】:2012-11-17 17:41:38
【问题描述】:

我正在使用 PHP 的 DOMDocument 对象来解析一些 HTML(使用 cURL 获取)。当我通过 ID 获取一个元素并输出它时,任何空的 &lt;span&gt; &lt;/span&gt; 标签都会获得一个额外的字符并变成 &lt;span&gt;Â &lt;/span&gt;

代码:

<?php
    $document = new DOMDocument();
    $document->validateOnParse = true;

    $document->loadHTML( curl_exec($handle) );
    curl_close($handle);

    $element = $document->getElementById( __ELEMENT_ID__ );

    echo $document->saveHTML(); 
    echo $document->saveHTML($element);
?>

$document-&gt;saveHTML() 命令按预期运行并打印出整个页面。但是,就像我上面说的,echo $document-&gt;saveHTML($element) 命令将空的&lt;span&gt; 标签转换为&lt;span&gt;Â &lt;/span&gt;

$element 中的所有 &lt;span&gt; &lt;/span&gt; 标记都会发生这种情况。

在这个过程中(通过 ID 获取元素并输出元素)插入了这个额外的字符?我可以解决它,但我更感兴趣的是根。

【问题讨论】:

  • 源和输出中的不间断空格:&lt;span&gt;&amp;nbsp;&lt;/span&gt;
  • 确保来源不包含不可见字符。
  • 我已经确认它不包含隐形字符。

标签: php dom domdocument


【解决方案1】:

我可以通过设置页面的字符编码来解决这个问题。我正在获取的页面没有定义的字符编码,我的页面只是一个没有定义标题信息的 sn-p。当我添加

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

问题消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-09
    • 2014-12-28
    • 2018-02-11
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    相关资源
    最近更新 更多