使用PHP/Codeigniter/ like净化器/CSStidy,如下所示:
require_once 'extra/htmlpurifier-4_4_0/library/HTMLPurifier.auto.php';
require_once 'extra/csstidy-1_3/class.csstidy.php';
$input_css = $this->input->post('input_css');
$config = HTMLPurifier_Config::createDefault();
$config->set('Filter.ExtractStyleBlocks', TRUE);
// Create a new purifier instance
$purifier = new HTMLPurifier($config);
// Wrap our CSS in style tags and pass to purifier.
// we're not actually interested in the html response though
$html = $purifier->purify('<style>'.$input_css.'</style>');
// The "style" blocks are stored seperately
$output_css = $purifier->context->get('StyleBlocks');
// Get the first style block
$unClean_css = $input_css;
$clean_css = $output_css[0];...is --有一种方法可以关闭HTMLPurifier或CSStidy内部导致$clean_css被迫采用小写的任何东西?就情况而言,我需要把输出留在一边。我只是不使用CSStidy,但它在安全性和压缩等方面工作得很好。因为区分大小写,just也在使用一些文件路径(例如背景图像)。我无法从根本上解决这个问题(即我不能强迫所有小写).所以我用我的方式来问这个问题。可能是配置设置?(我希望) ...I一直在寻找,但还没有看到一个人能做到这一点。
Update:正如昵称所指出的,CSStidy中有一个配置选项可以控制这一点,所以问题是:如何在HTMLpurifier上下文中将该选项设置为FALSE?
或者lowercase_s CSSTidy配置选项甚至是罪魁祸首?我不知道,因为到目前为止,我无法阻止这样或那样的低胁迫。例如,我想要这样的输入:
.zzzzzz {
background:transparent url("images/tmpl_Btn1_CSSdemo.jpg") no-repeat right top;
}...would 而不是变成(就像现在所做的那样):
.zzzzzz {
background:transparent url("images/tmpl_btn1_cssdemo.jpg") no-repeat right top;
}发布于 2012-06-02 15:18:49
实际上,这是一个HTML净化器错误,而不是CSS Tidy bug。我在做修复工作。
请应用此修补程序:http://repo.or.cz/w/htmlpurifier.git/commit/f38fca32a9bad0952df221f8664ee2ab13978504 (只有要在库中文件的修补程序/确实是必需的)
发布于 2012-06-01 02:29:11
您需要将lowercase_s CSSTidy配置选项设置为false。否则,它将将所有的选择器小写,以便包含在XHTML中。
https://stackoverflow.com/questions/10843600
复制相似问题