2013-06-20 3 views
2

HTMLPurifier는 기본적으로 허용하고 싶지 않은 태그를 많이 허용합니다. 문서에 따르면이 같은 정의를 추가해야합니다 :하나의 태그 만 허용하도록 HTMLPurifier 4.5 가져 오기

$config = HTMLPurifier_Config::createDefault(); 
if ($def = $config->maybeGetRawHTMLDefinition()) { 
    $def->addAttribute('a', 'target', new HTMLPurifier_AttrDef_Enum(array('_blank','_self','_target','_top'))); 
} 
$purifier = new HTMLPurifier($config); 

문제는 내가 HTMLPurifier_Config::createDefault();에서 오는 모든 태그를 제거 할 수있는 방법을 찾을 수 있다는 것입니다.

예를 들어 HTML <div>Sometext</div>은 위의 초기화 코드를 사용하여 DIV 태그를 유지합니다.

<strong>, <a href="*"><p> 만 허용하도록 HTMLPurifier를 설정하려면 어떻게해야합니까?

+0

나는 HTMLPurifier 약간 구조화 이상이 될 수도 있다고 생각합니다. – frodeborli

답변

3

당신은 "문서에 따르면 다음과 같은 정의를 추가해야합니다."라고 말합니다.

라이브러리 (지난 1 년 전)를 마지막으로 확인한 이후로 근본적인 것이 바뀌지 않는 한, 그건 사실이 아닙니다. HTML 정수기를 가르치고 싶다면 신형 속성이 있습니다. 네이티브 인식. 예를 들어 align=""과 같이 비표준 <font> 속성을 허용하도록 HTML 정수기를 가르치려면 원시 HTML 정의를 변경해야합니다.

$config = HTMLPurifier_Config::createDefault(); 
$config->set('HTML.AllowedElements', array(
    'strong','a','p' 
)); 
$config->set('HTML.AllowedAttributes', array(
    'a.href' 
)); 
$purifier = new HTMLPurifier($config); 

작동합니다 : 허용 목록은 일반 HTML 요소 순수하게 구성되어 있습니다 (! 그리고 당신이하는) 경우

그러나, 당신은 단지 $config 객체를 사용해야합니다. 그 별자리에 문제가 있습니까?

는 (도이 문서를 체크 아웃 : http://htmlpurifier.org/live/INSTALL를)

+0

감사합니다. 이전과 비슷하게 해봤지만 가장 최근 버전이 API를 많이 변경했다고 생각했습니다. – frodeborli

-1

내가 찾은 해결책은 HTMLPurifier를 구성하는 이전 방법을 사용하는 것이 었습니다.

if($def = $config->maybeGetRawHTMLDefinition()) { 
    $config->set('HTML.AllowedElements', array(
     'strong','a','p' 
    )); 
    $config->set('HTML.AllowedAttributes', array(
     'a.href' 
    )); 
} 

HTMLDefinition과 관련하여 어떻게 작동합니까? 어쩌면 그들은 호환성 레이어를 가지고있을 것입니다.

가장 큰 걱정거리는 $def 변수가 사용되지 않고 config에 대한 변경 사항이 캐싱되지 않는다는 것입니다.

+0

왜 그곳에'if '가 있는지 혼란 스럽네요. http://htmlpurifier.org/live/INSTALL의 끝을 확인하십시오. 원시 HTML 정의가 없어도 이러한 구성 값을 설정할 수 있어야합니다. – pinkgothic

관련 문제