【问题标题】:HTML Purifier removes IDs even with $config->set('Attr.EnableID', true);即使使用 $config->set('Attr.EnableID', true); HTML Purifier 也会删除 ID
【发布时间】:2014-02-05 12:58:12
【问题描述】:

我在使用 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>

我还尝试为带有 ID 的标题创建白名单条目,但无济于事,甚至直接操作存储在 $config 对象中的默认值。

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

ID 很重要,因为它们由 PHP 脚本分配,存储在 MySQL 中,然后由 JS 导航系统获取。它们需要从用户那里得到反馈,因为它们通常在后续内容更新时保持不变。

【问题讨论】:

    标签: php html filtering user-input htmlpurifier


    【解决方案1】:

    我认为这是因为数字 ID 在 HTML4 中无效。

    ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 (" _")、冒号 (":") 和句点 (".")。

    尝试使用不同的 ID 或更改 Doctype。

    【讨论】:

    • 啊,我想知道这是否与文档类型有关。明天早上我会试一试,如果成功的话,我会把它标记为已回答。
    猜你喜欢
    • 1970-01-01
    • 2013-05-05
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多