1
  

浄化が必要な html コードとは思えません。

htmlpurifier は、明らかにスペースであるべき文字列を疑問符に変えるのはなぜですか?

私の正確なhtml浄化コードは次のとおりです。

//purify the html input
include_once('inc/htmlpurifier-4.4.0/library/HTMLPurifier.auto.php');

$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'UTF-8');
$config->set('HTML.Doctype', 'HTML 4.01 Transitional');

if (defined('PURIFIER_CACHE')) {
    $config->set('Cache.SerializerPath', PURIFIER_CACHE);
} else {
    # Disable the cache entirely
    $config->set('Cache.DefinitionImpl', null);
}

$input = $_POST["about_me"];

# Help out the Purifier a bit, until it develops this functionality
while (($cleaner = preg_replace('!<(em|strong)>(\s*)</\1>!', '$2', $input)) != $input) {
    $input = $cleaner;
}

$filter = new HTMLPurifier($config);
$htmlpurified_output = $filter->purify($input);

情報を保存するときに、php ページヘッダーと mysql で utf8 を有効にしています。

同じページの他のテキストエリア内に他のUTF8文字を書き込んでDBに保存し、再表示することができます。犯人は間違いなく、実際の文字の代わりに疑問符を返す htmlpurifier です。

その他の質問にはお答えできる範囲でお答えします。

4

1 に答える 1

2

そして答えは...

エンコーディングがすべての領域で適切に設定されていることを常に確認するため。

テーブルの「about_me」行は、ASCII文字のみを受け入れるように設定されていました。ええと。

みんなの時間を無駄にしてすみません。

于 2012-05-24T23:23:43.650 に答える