2010-11-09 12 views
6

Bu, HTMLPurifier'da izin vermek istediğim etiketlerin özel bir kombinasyonudur, ancak kombinasyonun işe yaramayacağı anlaşılıyor.HTMLPurifier'ta komut, nesne, param, katıştır ve iframe etiketlerine nasıl izin veririm?

Çalıştırmak için komut dosyası etiketlerini bulabilirim, ancak sonra da etiketler kaldırılır (HTML.Trusted = true ile komut dosyası etiketlerini etkinleştiririm). Etiketleri tekrar gömdüğümde, komut dosyası etiketleri çıkarılır (HTML.Trusted'ı kaldırırım).

 $config->set('HTML.Trusted', true); 
     $config->set('HTML.SafeEmbed', true); 
     $config->set('HTML.SafeObject', true); 
     $config->set('Output.FlashCompat', true); 

Hatta kötü şeyler yapılır aşağıda ekleyerek çalıştı: Ayrıca

 $config->set('HTML.Allowed', 'object[width|height|data],param[name|value],embed[src|type|allowscriptaccess|allowfullscreen|width|height],script[src|type]'); 

, ben iframe'lerin Ne olursa olsun işe gitmek için görünmüyor olabilir aşağıdaki benim yapılandırma olduğunu. Ben ekleyerek çalıştı:

 $config->set('HTML.DefinitionID', 'enduser-customize.html iframe'); 
     $config->set('HTML.DefinitionRev', 1); 
     $config->set('Cache.DefinitionImpl', null); // remove this later! 
     $def = $config->getHTMLDefinition(true); 
     $iframe = $def->addElement(
      'iframe', // name 
      'Block', // content set 
      'Empty', // allowed children 
      'Common', // attribute collection 
      array(// attributes 
       'src*' => 'URI#embedded', 
       'width' => 'Pixels#1000', 
       'height' => 'Pixels#1000', 
       'frameborder=' => 'Number', 
       'name' => 'ID', 
      ) 
     ); 
     $iframe->excludes = array('iframe' => true); 

nesne/param ve embed ile, hatta komut dosyası etiketleri çalışmak için tüm combo alma konusunda herhangi bir yardım büyük mutluluk duyacağız !!!

Evet, bu kesinlikle tüm kullanıcılar için değil, sadece "özel" kullanıcılar içindir.

Teşekkürler! http://htmlpurifier.org/phorum/read.php?3,4646

akım: -

PS burada dişin alt kısmında iframe eklemek için ben bir çözüm buldum

http://htmlpurifier.org/docs/enduser-customize.html


GÜNCELLEME beni bağlamak etmeyiniz yapılandırması şu anda:

 $config->set('HTML.Trusted', true); 
     $config->set('HTML.SafeEmbed', true); 
     $config->set('HTML.SafeObject', true); 
     $config->set('Output.FlashCompat', true); 
     $config->set('Filter.Custom', array(new HTMLPurifier_Filter_MyIframe())); 
Eğer HTMLPurifier forumda benim yorum ile sorun yaşıyorsanız ben yöntem bu gibi görünmek için ne anlama çünkü UPDATE İÇİN

GÜNCELLEME

, bu olabilir:

public function preFilter($html, $config, $context) { 
    return preg_replace("/iframe/", "img class=\"MyIframe\" ", preg_replace("/<\/iframe>/", "", $html)); 
} 
+0

"HTML Purifier kullanmayın." :-) –

+0

HTML Arıtma kayaları! Neden onu kullanmak istemiyorum? ;) – shmuel613

+0

Gerçekten doğru olması için, muhtemelen HTMLPurifier_Filter'ı genişletmeniz gerekir. Çözüm, aksi halde harika; Bunun yerine güvendiğim bu ancak beyaz listeye ekleyen alanları kullanıyorum (ör. Youtube'un yeni iframe katıştırması). –

cevap

5

HTMLPurifier Google grubu aracılığıyla çözümü buldunuz (teşekkür ederim Edward Z. Yang !!!). Nesne, yerleştirme ve komut dosyası etiketlerinin aynı anda sayfada bulunmasına izin veren çözüm, HTMLModuleManager.php __construct() yöntemindeki $ ortak dizideki "object" nesnesini REMOVE olarak kaldırmaktır. Bu, elbette, sizin konfigürasyonunuzda belirtmediğiniz sürece hiç kimse nesne etiketlerini ekleyemeyecektir.

Benim son yapılandırma şimdi:

 $config->set('HTML.Trusted', true); 
     $config->set('HTML.SafeObject', true); 
     $config->set('Output.FlashCompat', true); 
     $config->set('Filter.Custom', array(new HTMLPurifier_Filter_SafeIframe())); 

Gerçekten bu talimatlar HTMLPurifier kullanmak istiyorum diğer geliştiriciler yardımcı olabilir umuyoruz. Başlangıçta bizim wysiwyg editörü gelen metin temizlemek ve fırçalamak için kullandığımız ile karşılaştırıldığında, HTMLPurifier yaklaşık% 85 daha hızlı!

+1

'HTMLPurifier_Filter_SafeIframe' sınıfının bir kopyasını nasıl alabilirim? – Sonny

+0

bu soruya bakın (http://stackoverflow.com/questions/4739284/htmlpurifier-iframe-vimeo-and-youtube-video) – Piero

İlgili konular