Boş etiketleri kaldırmak ancak blockquotes ucunu tutmak için preg_replace

2 Cevap php

Ben sayfasında etiketleri (Sadece boşluk ile inluding etiketleri) tüm boş kaldırmak için bu ifadeyi yaptı.

$content =  preg_replace('/<[^\/>]*>([\s]?)*<\/[^>]*>/', '', $content);

Bu gibi içeriği ile uğraşmak zorunda kadar bir tedavi çalıştı ...

 <blockquote>
<p >foo bar</p>
</blockquote>
<p ><a href="image.jpg" rel="lightbox" title=""><img  title="image" src="image.jpg" /></a><br /></p>

ve o kadar onu çıkışları ...

<blockquote>
<p >this is a test for the pluggin</p>
<p ><a href="image.jpg" rel="lightbox" title=""><img  title="image" src="image.jpg" /></a><br /></p>

Bu durumda, </blockquote> çıkarılması.

Bu sefer kafamı çizilmemesi edilmiş ve bu çalışma alınamıyor. Herkes biçimlendirmek etiketleri yaptığını belirterek dışında bariz bir çözüm görebiliyor musunuz? Ben de bir wordpress yazı üzerine 'the_content' biçimlendirme olduğunu söylemek gerekir.

2 Cevap

HTML düzenli bir sözdizimi değildir ve kenar durumlarda ve FRİKİKLERİNDEN sonu yoktur çünkü Regexplerin ve HTML, iyi bir maç değil. Bu tür this one gibi bir HTML çözümleyici kullanarak ve DOM nesnesi manipüle / teftiş daha iyi olacak.

Ayrıca tüm etiketleri almazsa bulursanız, Basit HTML Dom daha gelişmiş olduğu, HTML Purifier bakmak isteyebilirsiniz.