2010-07-20 62 views
1

我試圖通過htmlpurifier傳遞一些XML標記(ABCDEF>)。由於標籤本身不被支持,我想先添加一個元素,然後將其添加到allowedElements。然而,這不起作用,我只是得到一個空白頁面。任何想法請在我做錯了什麼,或者如果有一個更簡單的方法來實現我在找什麼。HTMLPurifier - 添加到忽略列表

$config = HTMLPurifier_Config::createDefault(); 
$config->set('Core', 'Encoding', "UTF-8"); 
$config->set('HTML', 'DefinitionID', 'pinaki-test'); 
$config->set('HTML', 'DefinitionRev', 3); 
$config->set('Cache', 'DefinitionImpl', null); // remove this later! 
$config->set('Cache', 'SerializerPath', "/var/cache/htmlpurify"); 
$def = $config->getHTMLDefinition(true); 
$def->addElement("tag1", false, 'Empty', 'Common', array()); 
$def->addElement("tag2", false, 'Empty', 'Common', array()); 
$config->set('HTML', 'AllowedElements', array("tag1", "tag2")); 

讓我們知道是否有人需要任何其他細節。

注:圖書館是不添加元素做工精細。

回答

3

你應該把錯誤報告;使開發更容易!

ini_set('display_errors', true); 
error_reporting(E_ALL & ~E_NOTICE); // or E_ALL if you're feeling good 

修復一堆錯誤(以下簡稱「定稿意味着以後所有的configs要在你面前getHTMLDefinition無法編輯的配置;棄用API意味着你要改變你的配置設定的格式,但是是無害的),那麼你得到一個空字符串,然後你需要確保你的新元素都在別人的允許的元素,一個簡單的方法做,這是行內標記它們。我懷疑AllowedElements屬性是你想要的,因爲這將排除所有其他元素...

<?php 
require_once 'library/HTMLPurifier.auto.php'; 
$config = HTMLPurifier_Config::createDefault(); 
$config->set('Core.Encoding', "UTF-8"); 
$config->set('HTML.DefinitionID', 'pinaki-test'); 
$config->set('HTML.DefinitionRev', 3); 
$config->set('Cache.DefinitionImpl', null); // remove this later! 
$config->set('Cache.SerializerPath', "/var/cache/htmlpurify"); 
$config->set('HTML.AllowedElements', array("tag1", "tag2")); 
$def = $config->getHTMLDefinition(true); 
$def->addElement("tag1", 'Inline', 'Empty', 'Common', array()); 
$def->addElement("tag2", 'Inline', 'Empty', 'Common', array()); 
$purifier = new HTMLPurifier($config); 
echo $purifier->purify('<tag1>asf'); 
+0

我確實有錯誤打開,請你解釋一下你的意思是「它將排除所有其他元素」。問這個,因爲我用的組$ config->設置(「HTML.AllowedElements」,陣列(「標籤1」,「標籤2」))無addElements()和它沒有似乎忽略了其他標籤。該文件還表示,它是消減性的,即只作爲白名單。我錯過了什麼嗎? – pinaki 2010-07-20 18:41:34

+1

我不相信你打開了錯誤:如果他們是,你不會得到一個空白頁。請記住,display_errors和error_reporting都是控制錯誤。 該文檔是在這方面有點混亂。減法表示的是,HTML Purifier具有內置的允許元素集,並且您不能通過將其添加到允許的元素中來奇蹟般地添加對其他元素的支持。但是,AllowedElements本身就像白名單一樣,因此不在列表中的任何內容都將被排除。 – 2010-07-20 19:07:28

+0

那麼作爲替代方法,您會有什麼建議?感謝您的詳細解釋。 – pinaki 2010-07-21 04:36:24