Php HTML净化器转换&-&燃气轮机&;amp;

Php HTML净化器转换&-&燃气轮机&;amp;,php,yii2,htmlpurifier,Php,Yii2,Htmlpurifier,我在我的文本字段中使用HTML净化器(Yii2) 我需要保存原始的“&”,但净化器转换为“&” 我不想在净化器后使用str\u替换 你能帮我配置一下吗 我的配置: ['name'], 'filter', 'filter' => function($value) { return HtmlPurifier::process($value, [ 'HTML.SafeObject' => true, 'HTML.SafeEmbed' => tr

我在我的文本字段中使用HTML净化器(Yii2)

我需要保存原始的“&”,但净化器转换为“&”

我不想在净化器后使用
str\u替换

你能帮我配置一下吗

我的配置:

['name'],
'filter',
'filter' => function($value) {
    return HtmlPurifier::process($value, [
        'HTML.SafeObject' => true,
        'HTML.SafeEmbed' => true,
        'Core.EscapeNonASCIICharacters' => true,
        'Core.Encoding' => 'UTF-8'
    ]);
}
UPD:


文本示例,我想要purify:“Company name&Co”

您在将信息输入数据库之前正在净化的注释中提到

我建议您从体系结构的角度重新考虑这一点,因为它有两个缺点,例如,您丢失了原始用户输入(以后可能会出于任何一个原因对其进行分析),一旦您想对数据做其他操作,您的数据库就变得不那么有用,而且你当前版本的HTML净化器中的漏洞(可能与安全相关)不会被消除。您可以在中查看有关上下文转义/清除的重要性的更多信息

也就是说,您的问题之前已经在HTML净化器论坛上讨论过:。该帖讨论了为什么很难区别对待
&
,保持安全,并从本质上“建议”不要使用HTML净化器,这当然不能解决您的问题

尽管如此,如果您被迫在数据库中存储纯HTML,该线程中的一些建议和想法可能会对您有所帮助:

也许一个更有用的回答是:将用户提交的原始数据(不运行HTML净化器)存储在数据库中,并对其运行搜索查询。但是,请在数据库中存储HTML版本的缓存版本


或者(这使用了
为什么需要将
&
保存在原始文件中?您净化的目的是什么?(如果您想知道我询问的原因,请参阅和)为什么?HTML允许
&
在后跟空格时显示为文字字符。无论是否允许,如果上下文是HTML输出,&;都不是问题,因此@pinkgothic的问题仍然是相关的。@pinkgothic,我添加了我想要净化的上下文,并将其保存在我的数据库中。我知道这不是一个好方法。我保存在原始数据库中,因为我在显示公司名称并向用户发送消息时使用了此文本。我并不介意否决票本身,但我很惊讶没有人评论为什么。如果否决票看到此情况,您能解释一下原因吗?