代码之家  ›  专栏  ›  技术社区  ›  Rwky

php domnode实体和nodevalue

  •  2
  • Rwky  · 技术社区  · 15 年前

    当获取在nodeValue中包含实体的domnode对象的nodeValue(即a>)时,它会将该实体转换为其可打印字符(即>)

    是否有人知道如何使它保持为一个实体,当它转换成意外的东西时,它确实会扰乱字符串比较。

    下面的代码再现了您将注意到的问题:转储的长度是3,而应该是6。

    <?php
    $xml='<?xml version="1.0"?>
    <root>
    <element>&gt;</element>
    </root>';
    $a=new DOMDocument();
    $a->loadXML($xml);
    var_dump($a->childNodes->item(0)->nodeValue);
    
    1 回复  |  直到 15 年前
        1
  •  5
  •   Michael Mrozek    15 年前

    loadXML() 接受 options 参数,其中一个选项是 LIBXML_NOENT ,它允许将实体转换为其表示形式,因此默认情况下 加载XML() 不应该这么做。然而,libxml中似乎有一个bug导致它一直发生,根据 this bug report