這是怎麼樣的,我想允許HTMLPurifier標籤一支專兼結合的,但似乎無法得到的結合工作。如何在HTMLPurifier中允許腳本,對象,參數,嵌入和iframe標籤?
我可以得到腳本標籤工作,但隨後嵌入標記獲取刪除(我支持與HTML.Trusted =真正的腳本標記)。當我嵌入標籤時,腳本標籤被剝離(我刪除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
UPDATE
我發現了一個解決方案,在螺紋的底部在這裏添加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));
}
「不要使用HTML淨化器」。 :-) – 2011-01-19 17:53:10
HTML淨化器岩石!爲什麼我不想使用它? ;) – shmuel613 2011-02-14 09:03:43
要真正正確,你應該擴展'HTMLPurifier_Filter'。不過,解決方案還是很棒的。我正在使用這個功能,但將我信任的域列入白名單(例如,youtube的新iframe嵌入)。 – 2011-03-15 00:48:18