HTMLPurifier разрешает атрибуты

У меня проблемы с тем, чтобы HTMLPurifier не фильтровал атрибуты тегов, но до сих пор безуспешно, и я схожу с ума.

    $config = HTMLPurifier_Config::createDefault();
    $config->set('Core.Encoding', 'UTF-8');
    $config->set('Core.CollectErrors', true);
    $config->set('HTML.TidyLevel', 'medium');
    $config->set('HTML.Doctype', 'XHTML 1.0 Transitional');
    $config->set('URI.DisableExternalResources', false);

    $config->set('HTML.Allowed', 'table[border|width|style],tbody,tr,td,th,img[style|src|alt],span[style],p[style],ul,ol,li,strong,em,sup,sub');

    $PHTML = new HTMLPurifier($config);
    echo htmlspecialchars($PHTML->purify($html));

    // The input string:
    "Some <span style="text-decoration: underline;">cool text</span> <img src="http://someurl.com/images/logo.png" alt="" />.

    // The output string:
    "Some <span>cool text</span> <img src="%5C" alt="" />.

Я хочу разрешить данные атрибуты для указанных элементов, которые определены в опции HTML.Allowed.


person kanevbgbe    schedule 09.05.2012    source источник


Ответы (2)


Отключите магические кавычки. (Обратите внимание на %5C)

person Edward Z. Yang    schedule 09.05.2012
comment
Я пробую, но теперь он выводит: Some ‹span›cool text‹/span› ‹img src=\ alt= /› - person kanevbgbe; 10.05.2012

Немного запоздалое предложение, но я столкнулся с аналогичной проблемой, когда HTMLPurifier удаляет атрибуты style, даже если они были настроены в параметре HTML.Allowed.

Решение, которое я нашел, требует, чтобы вы также настроили CSS.AllowedProperties, который выглядит примерно так:

$config->set('CSS.AllowedProperties', 'text-align,text-decoration,width,height');

Используйте это в сочетании с HTML.Allowed:

$config->set('HTML.Allowed', 'img[src|alt|style],span[style]');

Я надеюсь, что кто-то еще найдет это полезным, вы можете прочитать больше о CSS.AllowedProperties здесь.

person BeesonBison    schedule 30.04.2015