私はリッチテキストエディターの出力をサニタイズするためにHTMLPurifierを使用してきましたが、最終的には次のようになりました。
include_once('htmlpurifier/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);
}
# 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);
$output = $filter->purify($input);
主な関心事:
- オートローダーを含めます。
HTMLPurifier_Config
asのインスタンスを作成します$config
。
- 必要に応じて、を使用して構成設定を設定します
$config->set()
。
- のインスタンスを作成し、それ
HTMLPurifier
に渡します$config
。
- 入力に使用
$filter->purify()
します。
ただし、出力でHTMLを許可する必要がないものには完全にやり過ぎです。