1

我遇到了 HTMLPurifier 的问题,它似乎正在转换

£

回到

£

我目前的配置是:

$config = \HTMLPurifier_Config::createDefault();
$config->set('HTML.Doctype', 'XHTML 1.0 Transitional');
$config->set('Core.Encoding', 'UTF-8');
$config->set('Attr.AllowedFrameTargets', array('_blank'));
$config->set('HTML.Trusted', true);
$config->set('CSS.Trusted', true);
$config->set('Attr.EnableID', true);

$def = $config->getHTMLDefinition(true);
$def->addAttribute('a', 'href*', 'URI');
$def->addAttribute('a', 'rel', 'CDATA');

$objPurifier = new HTMLPurifier($config);
$string = $objPurifier->purify($string);

首先我只是简单地传递了 £ 符号,它似乎被忽略并且没有被转换为£所以我决定在将 $string 传递给净化器之前运行 str_replace() ,但这会将它转换回 £ 符号 - 所以我真的迷路了,如果有人知道什么配置设置可能会改变这种行为,我将不胜感激。

我现在在净化后运行 str_replace() ,但必须有更好的方法。

4

1 回答 1

0

这是设计使然;此处发生的规范化有助于 HTML Purifier 避免某些类型的 XSS 错误。 http://htmlpurifier.org/docs/enduser-utf8.html值得一读。

于 2013-02-26T00:21:30.963 回答