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 & x" text="x & Life x"/>
这是字符串的一小部分
因此,当我调用 SimpleXMLElement
时,我得到
String could not be parsed as XML
我试图通过将 double_encode
值设置为 false
来避免这种情况,但它不起作用。
我无法删除 SimpleXMLElementon
步骤,它破坏了 drupal 的一些功能。
我做错了什么?
____EDIT_____
作为检查,我将 htmlspecialchars 替换为
$replace = str_replace('&', '&', $string);
这工作正常。
$replace = str_replace('&', '&', $string);
我有一个来自 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 & x" text="x & Life x"/>
这是字符串的一小部分
因此,当我调用 SimpleXMLElement
时,我得到
String could not be parsed as XML
我试图通过将 double_encode
值设置为 false
来避免这种情况,但它不起作用。
我无法删除 SimpleXMLElementon
步骤,它破坏了 drupal 的一些功能。
我做错了什么?
____EDIT_____
作为检查,我将 htmlspecialchars 替换为
$replace = str_replace('&', '&', $string);
这工作正常。
$replace = str_replace('&', '&', $string);