Hiçbir bağımlılıkları ile PHP için sağlam BB kod çözümleyici var mı?

3 Cevap php

Ben müşteri php4 kullanıyor ve armut var gibi görünmüyor bir durum var. VBulletin'in BBCode sistemi ile çalışacak bir tesis PHP BBCode ayrıştırıcı var mı?

Ben sadece HTML BBCode dönüştürmek gerekir. Bu yeni bir platform Powered bir veri göç olduğunu, bu yüzden ben vBulletin'in BBCode ayrıştırıcı kullanamazsınız.

Dokümanlar:

http://www.vbulletin.com/forum/misc.php?do=bbcode

3 Cevap

Here's one on HotScripts.com.

Update bu yazı doğrudan yeterli içeriğe sahip olmadığını (bu cevabı kabul üç yıl sonra girilen) eleştirilere yanıt vermek için.

Senaryonun adı şu anda "Alımı Ayrıştırıcı (HTML BBCode)" dir.

11 Şubat 2013 itibariyle bağlantı güncellendi.

Geleceğe dönük için olay tekrar bozulur link, ben senin için bu soruya cevap zaman yaptığı gibi, arama terimi BBCode to HTML php ile Google'ı kullanarak öneririz. Veya, bir daha hedefli bir ortamda arama becerilerinizi denemek için HotScripts ziyaret edebilirsiniz.

'Katı'? Ben tüm HTML-enjeksiyon saldırıları izin içine kandırmak kolay dikkatsiz regexen gevşek bir koleksiyon, gibi görünüyor all.they bir katı BBcode ayrıştırıcı bulmadım.

Örneğin yayınlanan bir John W açıkça dahil olmak üzere birçok etiketleri ile istismar edilebilir:

[img]xxx" onerror="alert('JS injection!')[/img]

artı javascript: ve diğer tehlikeli URL'ler, kaçmak için başarısız verir &, (dahil %!) yanlışlıkla olmamalı (diğerleri izin ederken çok URL karakterler izin vermiyor Yazar oldukça dize ters bölü-kaçış var ne yaptığını anlamış değil) ve misnested etiketleri veya yanlışlıkla başka etiketleri 'nitelikleri içine çekilir etiketleri izin vermemek için başarısız ... temelde güvensiz bir karmaşa ve bu par bbcode ayrıştırıcıların ile ders.

Yararsızdır cevap için özür dilerim (bir yorum sığmayacak kadar büyüktü).

ETA Yorum re: Ah de sadece benzer, tam bir bbcode modül değil. Her dönüşüm için daha sonra, & için bir vekil, < için 02 ve 03 için > şeklinde çizgiler, uzaklaştırıldı, mevcut kontrol karakterleri ve ardından el byte 01 ile bölünmüş adım (\x02[^\x03]*\x03) üzerine re.split kullanılan ve 'içteki' sonra çalışma linebreaks ve emotes gibi değiştirmeler, dışa doğru olsa bağlantıları ve italik görüntüleri / ile başlayan, her saniye (non-tag) kısmında yedek regex koştu gider olarak kalın biçimlendirme, \x02html tags\x03 ekleyerek. Sonra nihayet HTML-kodlamak &<> ile kontrol kodlarını değiştirin &<>. Bu basit regex tabanlı biçimlendirme güvenlik açıklarının büyük kaynağı olan, kendini işaretlenmiş alıyorum biçimlendirme durur.

Düşününce gel, ben de gerçek bir Python bbcode ayrıştırıcı yazdın, ama sadece hızlı bir uyumluluk kesmek gibi; tam bbcode tüm yeteneklerini sunmuyor. Özellikle, herhangi bir başka aralık etiketi içinde (yakın-etiketi ile etiketi yani) herhangi bir aralık etiketi yuvalama izin verilmiyor. Eğer herhangi bir etiketi maç ve bir yedek işlev etiket adına göre yerine nasıl karar için bir tek-geçişli regex kullanmak gibi bu, kabul edilebilir olduğunu, uygulamak için nispeten kolaydır. örn.:

\[ (i|b|color|url|somethingelse) \=? ([^]]+)? \] (?: ([^]]*) \[\/\1\] )

(Boşluk sadece okunabilmesi için yani bu bir VERBOSE regex olduğunu. Gibi herhangi bir regex kadar hiç okunabilir.)

Yuvalama Çıkarma büyük köşe vakalarının sayısını kolaylaştırır.

Bu kütüphane PEAR gerektiren ve enjeksiyonları önlenmesi için bazı hileler var değildir.

http://www.christian-seiler.de/projekte/php/bbcode/index_en.html