2014-01-16 54 views
4

雖然使用配置選項來避免這種行爲,但我在使用HTML Purifier時遇到了問題,它會刪除標題元素上的ID。

現在我使用:

// set up HTML Purifier for user inputs 
require_once 'htmlpurifier/library/HTMLPurifier.auto.php'; 

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

$purifier = new HTMLPurifier($config); 

我再餵它像一個字符串:

<h6 id="1843804297">This is a title</h6><h5 id="1979691494">This one too.</h5><h3 id="932393874">I think you see where this is going.</h3> 

我也曾嘗試使用標識創建的標題列入白名單條目都無濟於事,甚至直接操作存儲在$ config對象中的默認值。

$config->def->defaults['Attr.EnableID'] = true; 

這些ID很重要,因爲它們是由PHP腳本分配的,存儲在MySQL中,隨後由JS導航系統拾取。他們需要從用戶那裏獲得信息,因爲他們通常會保持靜態,以便隨後進行內容更新。

回答

6

我認爲這是因爲數字ID在HTML4無效。

ID和名稱標記必須以字母([A-Za-z])開頭,後面可以跟隨任意數量的字母,數字([0-9]),連字符(「 - 」),下劃線(「_」),冒號(「:」)和句點(「。」)。

嘗試使用不同的ID或更改Doctype。

+0

啊,我想知道這是否與文檔類型有關。明天早上我會拍這張照片,並將其標記爲已解決。 –

相關問題