2010-09-23 38 views
12

Aşağıdaki kod var:Neden strip_tags PHP'de çalışmıyor?

<?php echo strip_tags($firstArticle->introtext); ?> 
$ firstArticle bir stdClass nesnesidir

:

object(stdClass)[422] 
    public 'link' => string '/maps101/index.php?option=com_content&view=article&id=57:greenlands-newest-iceberg&catid=11:geography-in-the-news' (length=125) 
    public 'text' => string 'GREENLAND'S NEWEST ICEBERG' (length=26) 
    public 'introtext' => string '<p>A giant chunk of ice calved off the Petermann Glacier on 

    the northwest side of Greenland this summer. At nearly 100 square miles (260 

    sq. km) in size, four times the size of Manhattan, th' (length=206) 
    public 'date' => 
    object(JDate)[423] 
     public '_date' => int 1284130800 
     public '_offset' => int 0 
     public '_errors' => 
     array 
      empty 

Sen $ firstArticle-> introtext dize ifade ettiğini görebiliriz:

"<p> Grönland'ın kuzeybatısındaki Petermann Buzulu'ndan devasa bir buz kütlesi buzağılandı. Yaklaşık 100 mil kare (260 km kare) büyüklüğünde, Manhattan'ın dört katı büyüklüğünde" th.

<p> etiketi bu uygulamada benim için bir sorundur, ancak strip_tags kesinlikle kaldırmayı reddediyor ve nedenini anlayamıyorum. Aslında strip_tags vazgeçti ve/< regex ile yerine preg_replace yapmaya teşebbüs | *>/(\ n.):?

preg_replace('/<(.|\n)*?>/', '', $firstArticle->introtext); 

Ama bu da işe yaramadı! Çıktığında tüm HTML etiketlerini (eşleşen veya olmayan) bu dizeden nasıl çıkarabilirim?

+4

Burada & nbsp; & lt: p > 'var mı? – Wrikken

+0

Dizideki strip_tags() öğesini test ettim ve burada çalışıyor. – Evert

cevap

47

deneyin:

benim durumumda
<?php echo strip_tags(html_entity_decode($firstArticle->introtext)); ?> 
+1

Çağlar boyunca bunun için arama! Teşekkürler. – hohner

+0

Benim için çalıştı, teşekkürler! –

+0

Bunun için teşekkürler, saatlerce tedavi etmeye çalıştığım bir sorunu giderdi. – Steve

6

şerit etiketleri çalışmadığını çok meraklı ....

belki "<s>" htmlentity-kodlanmıştır? "& lt; p & gt;" gibi; ..., ayrıca htmlentity kodlanmış olanları tüm etiketleri yerini alacak bu otehrwise

(sayfanın kaynak kodu bir göz), ama o kadar ilk olarak bu deneyin bu p-etiketi basitçe htmlentity kodlanmış olduğundan neredeyse aşikar

preg_replace('/(?:<|&lt;).*?(?:>|&gt;)/', '', $firstArticle->introtext); 
1

, ben htmlspecialchars_decode($str); kullanmalıdır. html_entity_decode($firstArticle->introtext) benim için çalışmıyor gibi görünüyor.

Bazen htmlentities'u kullanmam gerekiyor.

 $txt = htmlentities($txt, null, 'utf-8'); 
     $txt = htmlspecialchars_decode($txt);