【问题标题】:how to keep <br/> tags when using Dom in php to parse html document?在php中使用Dom解析html文档时如何保留<br/>标签?
【发布时间】:2011-05-03 11:09:37
【问题描述】:

我在 php 中使用 dom 通过$node-&gt;nodeValue 检索 div 的内容。这个div的内容中有很多&lt;br/&gt;标签,但是当我把它存入数据库并在浏览器中输出后,所有&lt;br/&gt;标签都变成了空白。我想保留&lt;br/&gt; 标签,我该如何实现?

【问题讨论】:

    标签: php dom


    【解决方案1】:

    nodeValue 仅返回文本数据(如果在元素节点上使用)。使用saveXML()检索内容

    $node->ownerDocument->saveXML($node);
    

    【讨论】:

    • 那也会输出&lt;div&gt;代表的包含$node
    • 如果需要,从结果字符串中删除这些标签应该不难:)
    【解决方案2】:

    DOMNode::nodeValue 只会返回文本内容。

    由于&lt;br /&gt;是子元素,所以不会返回。

    你最好的选择是

    1. 创建一个空的临时字符串
    2. 循环遍历$node 中的所有子节点
    3. 使用DOMDocument::saveHTML()获取每个子节点的标记
    4. 将此字符串与您的临时字符串连接
    5. 将临时字符串保存到数据库中

    类似这样的东西 - http://www.php.net/manual/en/book.dom.php#89718

    【讨论】:

    • 嗨,我认为this function 更好,因为它使用 ownerDocument 属性(为每个 DOMNode、DOMElement 对象定义的 DOMDocument 对象)并避免创建更多我们需要的 DOMDocument 对象。
    【解决方案3】:

    假设您使用的是 MySQL(因为您没有说),请确保您使用函数 mysql_real_escape_string。莫勒博士的回答可能会提供进一步的见解。

    http://php.net/manual/en/function.mysql-real-escape-string.php

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      相关资源
      最近更新 更多