htmlentities()
ayrıştırmak değildir. Aksine, bu encodes verileri güvenli bir şekilde bir HTML belgesinde görüntülenebilir böylece.
Kodunuzu aşağıdaki gibi görünecektir:
- (Bazı mekanizma ile) BB-kodu ayrıştırmak; Henüz, sadece etiketleri içine girdi metin ayrıştırmak kaçan yapmayın!
- Lütfen ayrıştırıcı adım çıktı blok etiketleri ve düz metin (etiketleri arasındaki metin) temsil düğümlerini temsil düğümden oluşan, bazı ağaç yapısı olacaktır.
- Çıkış biçimi (HTML) için ağaç Render. Bu noktada,
htmlentities
kullanarak veri yapısında plain text kaçarlar.
Sizin oluşturma işlevi özyinelemeli olacaktır. Ilişkiyi belirlemek Bazı pseudo-fonksiyonları:
render( x : plain text ) = htmlentities(x)
render( x : bold tag ) = "<b>" . render( get_contents_of ( x )) . "</b>"
render( x : quote tag ) = "<blockquote>" .
render( get_contents_of( x )) .
"</blockquote>"
...
render( x : anything else) = "<b>Invalid tag!</b>"
Yani HTML için çıktı render yaparken htmlentities
sadece oyuna giriyor, görmek, bu yüzden düz metin gibi özel karakterleri içeren gerekiyordu eğer tarayıcı karışık almaz < ve>. Eğer düz metin render olsaydı, örneğin, tüm işlev çağrısı kullanmak olmaz.