Sınıfı ile beyaz liste elemanı htmlpurifier kullanılarak

3 Cevap php

Ben htmlpurifier belirli bir sınıfı vardır yalnızca span öğesi sadece izin vermek istiyorum

Herkes şimdi ben var, bunu nasıl biliyor

  $config->set('HTML.Allowed','a[href],p,ol,li,ul,img[src],blockquote,em,span[class]');
  $config->set('Attr.AllowedClasses',"allowed");

ama bu tüm açıklıklı izin verir ve yalnızca sınıf ben sadece "izin" sınıfını sağlayan istiyorum ama kendi sınıfında değeri "izin" olduğunda ben sadece yayılma izin vermek istiyorum izin verir

teşekkürler

3 Cevap

Tamam ben belirli bir sınıf fikrim yoktu tüm açıklıklı kaldırmak başardı Ambush-comander's öneri sınıf o zaman gerekirse o eleman elemanı silinecek sınıf var olmamasıdır dayalı .

Ben biraz araştırma yaptım ve ben sadece bu yüzden burada bir kod additonal dört satır gerekir talimatı aşağıda bir öznitelik eklemek açıklar htmlpurifier customize sayfa bulundu ben nasıl yaptım ne

 // more configuration stuff up here
    $config->set('HTML.DefinitionID', 'enduser-customize.html editor');
    $config->set('HTML.DefinitionRev', 1);
    $def = $config->getHTMLDefinition(true);
    $def->addAttribute('span', 'class*', new HTMLPurifier_AttrDef_Enum(
      array('allowed')
    ));
 // purify down here

the * in class makes the class requried and becuse we only allow the "allowed" class everything else gets striped. now, there is one caveats to doing it this way. if someone put that class in there span then it would be allowed in my case I'm not really using "allowed" I'm using something else that will be replaced by html purifier

hth başkası

ve pusu sayesinde ve tüm yardım için pinkgothic!

Ad hoc çözüm: gerekli olması sürede sınıfını yeniden tanımlamak, ve N olası değeri vardır öyle ayarlayın. Gerekli yapma o yoksa etiketi kaldırıldı neden olacaktır.

Sen my similar question bir yorum üzerine bıraktı. Eğer 'ön-işleme' bağlı değil, çünkü ben hala nedeniyle benim durumumda önemli olan enjektör / arıtma sipariş, bir çözümü yok, ama enjektör çözüm should sizin için çalışacak , tabiri caizse.

Bildiğim kadarıyla ben gördüğünüz gibi, size two decent three thorough dört seçeneğiniz vardır:

  1. Sol-over <span> ve HTML </span> etiketleri sakıncası yoksa boş tüm niteliklerine benim soru nitelik çözümü kullanabilirsiniz. Bunları sakıncası yoksa o zaman yürütme sırasını yeniden sakat çok, çok büyük olasılıkla olsa, sen, an empty-tag-stripping injector ile bu çözüm birleştirmek olabilir. (Yani düşünürseniz değil -. Mükemmel, size cevabım var :)!)

  2. Sen enjektörleri kullanabilirsiniz. Onlar HTML Arıtma oldukça kapsamlı ve detaylı özellik, o yüzden kutunun dışında sizin için şeyleri tamir edeceğim bir örnek hatırlatmak olamaz. Ama! Ben # 1 de, onları anlamaya yardımcı olabilir belirtilen enjektörü söz değil, bu konuda oldukça kapsamlı almak bulunuyor, the thread on the HTML Purifier forum where the injector 'Linkify' was created bakmak isteyebilirsiniz.

  3. Ben benim amaçlar için şu anda araştırıyorum şey PHP'nin yerleşik DOM yöntemlerdir. # 1 ve # 2 nedense sizi başarısız olursa bu sağlam bir alternatif, ama tabii ki pahalı kadarıyla kaynaklar gitmek gibi.

  4. Düzenli ifadeler. Ben gerçekten sadece son çare olarak bu söz ediyorum ve hatta ciddi bir öneri değil. Muhtemelen already purified HTML bir regex kullanmak için oldukça güvenli olurdu, ama iyi bir HTML çözümleyici böyle bir atık gibi görünüyor. (Ama sonra, kuşkusuz, bu nedenle 3. yapar.)

İyi şanslar.