htmlspecialchars 双编码不做的伎俩

htmlspecialchars double encode not doing the trick

我有一个来自 drupal 文本区域的字符串。 drupal 中的字符串包含 html 标签,但是当我打印字符串时,我看不到它们。

此字符串稍后进入 new SimpleXMLElement,但由于它有一些有问题的字符,我想调用它:

$string = htmlspecialchars($string, ENT_XML1 | ENT_QUOTES,'UTF-8', false);

问题是之后,我的字符串如下所示

<?xml version="1.0" encoding="UTF-8"?> 
<Data xmlns="http://www.digitalmeasures.com/schema/data" xmlns:dmd="http://www.digitalmeasures.com/schema/data-metadata" dmd:date="2016-11-03"> 
    <Record userId="1" username="y" dmd:surveyId="1127463">
        <dmd:IndexEntry indexKey="x" entryKey="x &amp; x" text="x &amp; Life x"/> 

这是字符串的一小部分

因此,当我调用 SimpleXMLElement 时,我得到

String could not be parsed as XML

我试图通过将 double_encode 值设置为 false 来避免这种情况,但它不起作用。 我无法删除 SimpleXMLElementon 步骤,它破坏了 drupal 的一些功能。 我做错了什么?

____EDIT_____

作为检查,我将 htmlspecialchars 替换为

$replace = str_replace('&', '&amp;', $string);

这工作正常。

$replace = str_replace('&', '&', $string);