PHP: Belirli bir metin üzerinden belirli html etiketleri Filtre

4 Cevap php

Sorunların bu tür geçmişte bir çok sorulan edilmiştir için ben, bir sürü googled. Ama benim ihtiyaçlarına uygun bir şey bulamadık.

Ben bir formdan bir html biçimlendirilmiş metin var. Tıpkı bunun gibi:

Hey, I am just some kind of <strong>formatted</strong> text!

Şimdi, ben izin vermez, tüm html etiketleri şerit istiyorum. PHP'nin yerleşik strip_tags () yöntemi çok iyi yapar.

Ama ben bir adım daha ileri gitmek istiyorum: Bazı Etiketler sadece iç ya da diğer etiketleri içinde izin vermek istiyorum. Ben de kendi XML Etiketler tanımlamak istiyorum.

Başka bir örnek:

I am a custom xml tag: <book><strong>Hello!</strong></book>. Ok... <strong>Hi!</strong>

Şimdi, <book/> elimden, ama <strong>Hi!</strong> o yol kalabilirler içinde <strong/> istiyorum.

Yani, ben izin ya da izin vermez ne bazı kuralları tanımlamak istiyorum, ve gerisini herhangi bir filtreye sahip olmak istiyorum.

Bunu yapmak için kolay bir yolu var mı? Düzgün html ayrıştıramıyor için Regexp, ben arıyorum ne değildir.

Selamlar, Jan Oliver

4 Cevap

Ben PHP DOM sınıfları dayalı kendi Filtre sınıfı yazdı. Buraya bak: XHTMLFilter class

Böyle bir şey olduğunu sanmıyorum, ben bile HTML Purifier bunu yapmaz sanmıyorum.

Sana Simple HTML Dom gibi bir şey kullanarak elle XHTML ayrıştırmak öneririz.

İzin verilen etiketler strip_tags, ikinci bir argüman kullanın.

$text = strip_tags($text, '<book><myxml:tag>');

Ben regex kullanmadan, diğer etiketleri içinde değilseniz sadece belirli etiketleri şerit için bir yol var sanmıyorum.

Ayrıca, regex HTML ayrıştırma at not iyi değil, ama bu seçeneklere göre yavaş. Ama neyse, sen burada ne yaptığınızı değil. Sen dize geçiyor ve siz istemediğiniz şeyleri kaldırarak ediyoruz. Ve karmaşık gereksinimi için ben tek seçenek regex kullanmak olduğunu düşünüyorum.

Tamamen dürüst olmak gerekirse ben etiketleri değil izin verilen ve hangilerinin karar gerektiğini düşünüyorum. Diğer etiketleri içinde olsun ya da olmasın hiç önemli değil. Bu biçimlendirme, bir senaryo.

İkinci argüman, bazı etiketleri izin cal olduğunu göstermektedir:

string strip_tags ( string $str [, string $allowable_tags ] )

From php.net