Мне нужно 3 разных конфигурации для разных ситуаций. Иногда мне это нужно, чтобы отфильтровать все, а в других формах мне нужно что-то разрешить. Однако я заметил, что любые новые определены, внесите изменения для всех других конфигураций 🙁
//this isn't working right
$default_cfg = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($default_cfg);
$purifier_minimal_cfg = HTMLPurifier_Config::createDefault();
$purifier_minimal_cfg->set('HTML.Allowed', 'em,strong,p,br');
$purifier_minimal_cfg->set('AutoFormat.AutoParagraph', true);
$purifier_minimal_html = new HTMLPurifier($purifier_minimal_cfg);
$purifier_featured_html_cfg = HTMLPurifier_Config::createDefault();
$purifier_featured_html_cfg->set('HTML.Allowed', 'a[href],abbr[title],blockquote,br,cite,code,del,div,em,hr,h1,h2,h3,h4,h5,h6,img[alt|src],li,ol,p,s,small,span,strong,table,tbody,td,tfoot,th,thead,tr,ul');
$purifier_featured_html_cfg->set('AutoFormat.AutoParagraph', true);
$purifier_featured_html = new HTMLPurifier($purifier_featured_html_cfg);
if ($purifier_featured_html->purify($html_string) == $purifier->purify($html_string))
echo 'this is bad!';
Кажется, работает хорошо для меня:
ezyang@sabre:~/Dev/htmlpurifier$ cat test.php
<?php
ini_set('display_errors', TRUE);
error_reporting(E_ALL);
include_once 'library/HTMLPurifier.auto.php';
//this isn't working right
$default_cfg = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($default_cfg);
$purifier_minimal_cfg = HTMLPurifier_Config::createDefault();
$purifier_minimal_cfg->set('HTML.Allowed', 'em,strong,p,br');
$purifier_minimal_cfg->set('AutoFormat.AutoParagraph', true);
$purifier_minimal_html = new HTMLPurifier($purifier_minimal_cfg);
$purifier_featured_html_cfg = HTMLPurifier_Config::createDefault();
$purifier_featured_html_cfg->set('HTML.Allowed', 'a[href],abbr[title],blockquote,br,cite,code,del,div,em,hr,h1,h2,h3,h4,h5,h6,img[alt|src],li,ol,p,s,small,span,strong,table,tbody,td,tfoot,th,thead,tr,ul');
$purifier_featured_html_cfg->set('AutoFormat.AutoParagraph', true);
$purifier_featured_html = new HTMLPurifier($purifier_featured_html_cfg);
$html_string = "<abbr>asdf</abbr>";
if ($purifier_featured_html->purify($html_string) == $purifier->purify($html_string))
echo 'this is bad!';
ezyang@sabre:~/Dev/htmlpurifier$ php test.php
ezyang@sabre:~/Dev/htmlpurifier$
Других решений пока нет …