PHP: HTML işaretleme sorun kesilmiş HTML işaretlemeleri görüntülenirken

4 Cevap php

I am using a Richtext box control to post some data in one page. and I am saving the data to my db table with the HTML mark up Ex : This is <b >my bold </b > text

Ben başka bir sayfaya, bu sütunun ilk 50 karakterleri görüntüleme duyuyorum. Şimdi ben kurtarıyorum, ben (kapanış b etiketi kayıp olacaktır (ilk 50 karakter ayırdığınız için) bu süs zaman ben cesur etiketi uygulanmış ve benim diğer sayfa (50'den fazla karakter ile) Cümle kaydetmek eğer ;). Yani kalın o sayfa benim içeriğinin kalanına uygulanır oluyor.

I bu nasıl çözebilir? Nasıl tüm açık etiketleri kapalı değil hangi kontrol edebilirsiniz? PHP bunu anyeasy yolu yoktur. Kadar benim tüm HTML etiketleri / işaretini kaldırın ve bana düz metin olarak cümle vermek için herhangi bir işlevi var mı?

4 Cevap

http://php.net/strip_tags

strip_tags işlevi aklınıza gelebilecek herhangi etiketlerini kaldırmak olacaktır.

Evet

$textWithoutTags = strip_tags($html);

Ben genellikle bu için HTML::Truncate kullanın. Tabii ki, bir Perl modülü olmak, size PHP doğrudan kullanmak mümkün olmayacak - ama kaynak kodu (HTML ayrıştırıcı kullanmak olan) bir çalışma yaklaşımını göstermektedir.

Alternatif bir yaklaşım, sen şu anda yapıyoruz gibi kesecek, ve sonra Tidy kullanarak bunu düzeltmek için denemek için olabilir.

İsterseniz HTML etiketleri kalacak, ama düzgün kapalı, bkz PHP: Truncate HTML, ignoring tags. Aksi takdirde, okumaya:

strip_tags HTML etiketlerini kaldırmak, ancak kesilmiş değilse HTML kişiler (örneğin &amp;), hangi hala sorunlara neden olabilir.

De varlıkları işlemek için, bir süs ardından, html_entity_decode etiketler sıyırma sonra varlıkları çözmek için kullanabileceğiniz, ve sonuçta varlıkları reencode olabilir htmlspecialchars:

$text = "1 &lt; 2\n";
print $text;
print htmlspecialchars(substr(html_entity_decode(strip_tags($text), ENT_QUOTES), 0, 3));

(ENT_QUOTES dipnotta kullanımı aslında all kişiler dönüştürmek.)

Sonuç:

1 < 2
1 <

Footnote: Yukarıda sadece ISO-8859-1 deşifre edilebilir varlıklar için çalışıyor. Eğer uluslararası karakterler için desteğe ihtiyacınız varsa, zaten UTF-8 kodlanmış dizeleri ile çalışıyor ve sadece html_entity_decode çağrısına belirtmek gerekir gerekir.