1

PHP/Codeigniter/HTMLPurifier/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];

... HTMLPurifier または CSStidy の内部にあるものをオフにして$clean_css、強制的に小文字にする方法はありますか? 大文字と小文字を区別するために、出力をそのままにしておく必要があります。私はCSStidyを使用しませんが、セキュリティや圧縮などにはうまく機能しています。大文字と小文字を区別するために、いくつかの(背景画像など)ファイルパスもホストしています。私は問題を根本から修正することはできません (つまり、すべてを小文字にすることはできません) ... そのため、私が行った方法で質問します。おそらく構成設定?(私は願っています) ...私は探していましたが、まだトリックを行う人を見つけていません。

更新: nickb が指摘するように、CSStidy にはこれを制御する可能性のある構成オプションがあるため、問題は次のようになります: HTMLpurifier のコンテキストでそのオプションを FALSE に設定するにはどうすればよいですか?

それとも、そのlowercase_sCSSTidy 構成オプションが原因でしょうか? 小文字を何らかの方法で停止することが今のところできないため、わかりません。たとえば、次のような入力が必要です。

.zzzzzz {
    background:transparent url("images/tmpl_Btn1_CSSdemo.jpg") no-repeat right top;
}

...になることはありません(現在行っているように):

.zzzzzz {
    background:transparent url("images/tmpl_btn1_cssdemo.jpg") no-repeat right top;
}
4

2 に答える 2

1

実際、これは HTML Purifier のバグであり、CSS Tidy のバグではありません。私は修正に取り組んでいます。

このパッチを適用してください: http://repo.or.cz/w/htmlpurifier.git/commit/f38fca32a9bad0952df221f8664ee2ab13978504 (library/ にファイルするパッチのみが本当に必要です)

于 2012-06-02T15:18:49.213 に答える
1

lowercase_sCSSTidy 構成オプションをに設定する必要がありますfalse。それ以外の場合は、XHTML に含めるためにすべてのセレクターを小文字にします。

于 2012-06-01T02:29:11.237 に答える