HTMLPurifier更改Windows页面1252输入的HTML实体

时间:2018-10-18 21:04:39

标签: htmlpurifier

我正在使用HTMLPurifier清理用户输入的HTML文件。正确的输入文件是简单的纯文本表,但是是由另一个程序创建的,该程序不是我的,并且无法更改或配置,因此我无法更改HTML文件。使用净化器的目的是防止用户意外或恶意上传包含脚本,指向恶意软件站点的链接等文件。

问题在于文件使用Windows代码页1252,其中包含“ 1/2”字符,并且它们还包含HTML实体foo(int *bar) { *bar = 42; } 。这两个字符在默认配置下都会导致HTMLPurifier中出现问题。

HTMLPurifier论坛上有很多有关此问题的文章,建议的解决方案是将所有内容更改为UTF-8字符编码。这不是我的情况的选择。还提到将配置更改为 %Core.EscapeNonASCIICharacters。我已经尝试过这些,但是我不确定我的语法是否正确。

这是我现在正在使用的:

%Core.Encoding

这不起作用:它将$config = HTMLPurifier_Config::createDefault(); $config->set('%Core.EscapeNonASCIICharacters', true); $config->set('%Core.Encoding', 'ASCII'); $purifier = new HTMLPurifier($config); $clean_html = $purifier->purify($contentsIn); &npsp;(U + 00BD)都转换为Â(Unicode序列的初始字节)。

如何设置HTMLPurifier来生成保留这些字符的输出?

0 个答案:

没有答案