我遇到了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(),但必须有更好的方法。
答案 0 :(得分:0)
这是设计上的;此处发生的规范化有助于HTML Purifier避免某些类型的XSS错误。 http://htmlpurifier.org/docs/enduser-utf8.html值得一读。