これは、HTMLPurifier で許可したいタグの特別な組み合わせのようなものですが、組み合わせを機能させることができないようです。
スクリプト タグを機能させることはできますが、埋め込みタグが削除されます (スクリプト タグを HTML.Trusted = true で有効にします)。埋め込みタグを元に戻すと、スクリプト タグが削除されます (HTML.Trusted を削除します)。以下は私の設定です:
$config->set('HTML.Trusted', true);
$config->set('HTML.SafeEmbed', true);
$config->set('HTML.SafeObject', true);
$config->set('Output.FlashCompat', true);
以下を追加してみましたが、事態はさらに悪化しました。
$config->set('HTML.Allowed', 'object[width|height|data],param[name|value],embed[src|type|allowscriptaccess|allowfullscreen|width|height],script[src|type]');
また、何があってもiframeを機能させることができないようです。追加してみました:
$config->set('HTML.DefinitionID', 'enduser-customize.html iframe');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // remove this later!
$def = $config->getHTMLDefinition(true);
$iframe = $def->addElement(
'iframe', // name
'Block', // content set
'Empty', // allowed children
'Common', // attribute collection
array( // attributes
'src*' => 'URI#embedded',
'width' => 'Pixels#1000',
'height' => 'Pixels#1000',
'frameborder=' => 'Number',
'name' => 'ID',
)
);
$iframe->excludes = array('iframe' => true);
コンボ全体を機能させるための助け、またはオブジェクト/パラメーターと埋め込みを含むスクリプトタグでさえ、大いに感謝します!!!
そうそう、これは明らかにすべてのユーザー向けではなく、「特別な」ユーザー向けです。
ありがとう!
PS - http://htmlpurifier.org/docs/enduser-customize.htmlにリンクしないでください。
アップデート
ここのスレッドの下部に iframe を追加するための解決策を見つけました: http://htmlpurifier.org/phorum/read.php?3,4646
現在の構成は次のとおりです。
$config->set('HTML.Trusted', true);
$config->set('HTML.SafeEmbed', true);
$config->set('HTML.SafeObject', true);
$config->set('Output.FlashCompat', true);
$config->set('Filter.Custom', array( new HTMLPurifier_Filter_MyIframe() ));
アップデートへのアップデート
HTMLPurifier フォーラムでの私のコメントに問題がある場合は、メソッドが次のようになることを意味している可能性があります。
public function preFilter($html, $config, $context) {
return preg_replace("/iframe/", "img class=\"MyIframe\" ", preg_replace("/<\/iframe>/", "", $html));
}