htmlspecialchars双重编码没有做的伎俩

时间:2016-11-03 15:10:17

标签: php drupal drupal-7

我有一个来自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);

这很好。

1 个答案:

答案 0 :(得分:0)

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