문제의 링크에있는 예를 기반으로이 솔루션을 해킹 할 수있었습니다. 그것은 매력처럼 작동하는 것 같습니다. 그것은 요소 단위로 제한되어 있지만 실제로는 내 목적에 적합합니다.
이것이 최선의 해결책인지는 잘 모르겠지만 나에게 도움이됩니다.
class CustomClassDef extends HTMLPurifier_AttrDef {
private $classes, $prefixes ;
public function __construct($classes, $prefixes) {
$this->classes = $classes ;
$this->prefixes = is_array($prefixes) ? join('|', $prefixes) : $prefixes ;
}
public function validate($string, $config, $context) {
$classes = preg_split('/\s+/', $string) ;
$validclasses = array() ;
foreach ($classes as $class) {
if (in_array($class, $this->classes) or
preg_match("/^({$this->prefixes})/i", $class)) {
$validclasses[] = $class ;
}
}
return join(' ', $validclasses) ;
}
}
$config = HTMLPurifier_Config::createDefault() ;
// Allow no classes by default
$config->set('Attr.AllowedClasses', array()) ;
$def = $config->getHTMLDefinition(true) ;
// Allow the class 'fa', and classes prefixed 'fa-' or 'foo-', on i tags
$def->addAttribute('i', 'class', new CustomClassDef(array('fa'), array('fa-', 'foo-'))) ;
// Allow classes prefixed 'language-' on code tags
$def->addAttribute('code', 'class', new CustomClassDef(array(), 'language-')) ;
$purifier = new HTMLPurifier($config) ;
흠. 이 질문과 답변이 도움이되는지 확인하십시오. http://stackoverflow.com/questions/2638640/html-purifier-removing-an-element-conditionally-based-on-its-attributes- 더 나아가지만, 나는 항상 치트 시트로 돌아 간다. 나는 속성을 처리하기를 원한다. ("참조 지점 : 속성 처리"참조) – pinkgothic