2010-07-20 7 views
1

htmlpurifier를 통해 일부 XML 태그 (abcdef>)를 전달하려고합니다. 태그 자체는 지원되지 않으므로 먼저 요소를 추가 한 다음 allowedElements에 추가하려고합니다. 그러나 이것은 작동하지 않습니다, 난 그냥 빈 페이지가 있어요. 어떤 아이디어가 내가 뭘 잘못하고 있는지 또는 내가 찾고있는 것을 성취 할 수있는 더 쉬운 방법이 있다면 바랍니다.HTMLPurifier - 목록을 무시하도록 추가

$config = HTMLPurifier_Config::createDefault(); 
$config->set('Core', 'Encoding', "UTF-8"); 
$config->set('HTML', 'DefinitionID', 'pinaki-test'); 
$config->set('HTML', 'DefinitionRev', 3); 
$config->set('Cache', 'DefinitionImpl', null); // remove this later! 
$config->set('Cache', 'SerializerPath', "/var/cache/htmlpurify"); 
$def = $config->getHTMLDefinition(true); 
$def->addElement("tag1", false, 'Empty', 'Common', array()); 
$def->addElement("tag2", false, 'Empty', 'Common', array()); 
$config->set('HTML', 'AllowedElements', array("tag1", "tag2")); 

다른 세부 정보가 필요한 경우 알려주십시오.

참고 : 라이브러리는 요소를 추가하지 않고도 정상적으로 작동합니다.

답변

3

오류보고를 켜야합니다. dev를 훨씬 쉽게 만든다! (; 사용되지 않는 API는 당신이 당신의 설정 세트 형식을 변경하지만 무해해야한다는 의미 "마무리는 모든 CONFIGS이 전에 getHTMLDefinition 할 필요가 의미 한 후 구성을 편집 할 수 없습니다), 당신이 얻을

ini_set('display_errors', true); 
error_reporting(E_ALL & ~E_NOTICE); // or E_ALL if you're feeling good 

오류의 무리를 고정 빈 문자열. 그런 다음 새 요소가 다른 요소의 허용 된 요소에 있는지 확인해야합니다.이 작업을 수행하는 쉬운 방법은 인라인이라고 표시하는 것입니다. 다른 모든 요소를 ​​제외하기 때문에 AllowedElements 특성이 원하는 것일 수 있습니다. ...

<?php 
require_once 'library/HTMLPurifier.auto.php'; 
$config = HTMLPurifier_Config::createDefault(); 
$config->set('Core.Encoding', "UTF-8"); 
$config->set('HTML.DefinitionID', 'pinaki-test'); 
$config->set('HTML.DefinitionRev', 3); 
$config->set('Cache.DefinitionImpl', null); // remove this later! 
$config->set('Cache.SerializerPath', "/var/cache/htmlpurify"); 
$config->set('HTML.AllowedElements', array("tag1", "tag2")); 
$def = $config->getHTMLDefinition(true); 
$def->addElement("tag1", 'Inline', 'Empty', 'Common', array()); 
$def->addElement("tag2", 'Inline', 'Empty', 'Common', array()); 
$purifier = new HTMLPurifier($config); 
echo $purifier->purify('<tag1>asf'); 
+0

오류가 켜져 있습니다. "다른 모든 요소가 제외됩니다."라는 의미를 설명해 주시겠습니까? ... i addElements()없이 $ config-> set ('HTML.AllowedElements', array ("tag1", "tag2"))을 사용했기 때문에 이것을 묻는다면 다른 태그를 무시한 것 같습니다. 또한 설명서에는 빼기 (subtractive), 즉 허용 목록으로 만 작용할 것이라고 나와 있습니다. 내가 놓친 게 있니? – pinaki

+1

나는 오류가 켜져있는 것을 믿지 않는다 : 만약 그렇다면 빈 페이지를 얻지 못할 것이다. display_errors와 error_reporting 모두 제어 오류를 기억하십시오. 문서는 그 점에서 다소 혼란 스럽습니다. 감산 (subtractive)이란 의미는 HTML Purifier가 허용 된 요소 세트를 내장하고 있으며 허용 된 요소에 추가하여 다른 요소에 대한 지원을 마술처럼 추가 할 수 없다는 것입니다. 그러나 AllowedElements 자체는 허용 목록처럼 동작하므로 목록에없는 항목은 제외됩니다. –

+0

대체 방법으로 무엇을 제안 하시겠습니까? 자세한 설명을 주셔서 감사합니다. – pinaki

관련 문제