HTMLPurifier - добавить атрибут имени в тег привязки

HTMLPurifier удаляет атрибут name из тега anchor Используя документацию в прошлом, я успешно создан новый элемент "include".

Но я не могу получить код, чтобы также добавить атрибут name для тега anchor. Я предпочитаю НЕ ограничивать значения name. Любая помощь будет оценена по достоинству.

Это код:

$config = HTMLPurifier_Config::createDefault();
// custom tag for included files
$config->set('HTML.DefinitionID', 'include');
$config->set('HTML.DefinitionRev', 16);
if ($def = $config->maybeGetRawHTMLDefinition()) {
    // this works for adding the include element
    $def->addElement('include', 'Block', 'Empty', 'Common', array('file*' => 'URI', 'height' => 'Text', 'width' => 'Text'));

  // This doesn't work - among the many things, I've tried...
  // 1) trying to get at least name ="target" to work
  // $def->addAttribute('a', 'name', 'Enum#target');
  // 2) trying to get any text to work
  // $def->addAttribute('a', 'name', 'text');
  // $def->addAttribute('a', 'name', new HTMLPurifier_AttrDef_Text());
}

$purifier = new HTMLPurifier($config);

person mseifert    schedule 03.05.2015    source источник


Ответы (2)


Я думаю, вы должны установить атрибут имени как true в Name.php, пожалуйста, проверьте

http://htmlpurifier.org/live/configdoc/plain.html#HTML.Attr.Name.UseCDATA

person Aftab Muni    schedule 04.05.2015

Похоже, есть два варианта. Один из них — определить все элементы и теги с помощью HTML.Allowed. Проще установить Attr.EnableID, который разрешает атрибуты id и name. Установка Attr.IDPrefix поможет предотвратить конфликты имен. Это работает:

$config = HTMLPurifier_Config::createDefault();
// allow name and id attributes
$config->set('Attr.EnableID', true);
// prefix all id and names with user_
$config->set('Attr.IDPrefix', 'user_');

// custom tag 
$config->set('HTML.DefinitionID', 'include');
$config->set('HTML.DefinitionRev', 2);
if ($def = $config->maybeGetRawHTMLDefinition()) {
    $def->addElement('include', 'Block', 'Empty', 'Common', array('file*' => 'URI', 'height' => 'Text', 'width' => 'Text'));
}

$purifier = new HTMLPurifier($config);
person mseifert    schedule 04.05.2015