为什么strip_tags不能在PHP中运行?

时间:2010-09-23 17:18:51

标签: php strip-tags

我有以下代码:

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

其中$ firstArticle是stdClass对象:

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

您可以看到$ firstArticle-&gt; introtext引用字符串:

<p>今年夏天,格陵兰岛西北侧的彼得曼冰川(Petermann Glacier)产生了一大块冰块,面积近100平方英里(260平方公里),是曼哈顿面积的四倍。 “

<p>标签在我的应用程序中对我来说是一个问题,但是strip_tags绝对拒绝删除它,我无法弄清楚原因。我实际上放弃了strip_tags并尝试使用regex /< ;(.|\ n)*?&gt; /:

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

但这也不起作用!当我输出时,如何从该字符串中删除所有HTML标记(匹配与否)?

3 个答案:

答案 0 :(得分:57)

尝试:

<?php echo strip_tags(html_entity_decode($firstArticle->introtext)); ?>

答案 1 :(得分:6)

非常好奇条带标签不起作用....

也许是你的“&lt; p&gt;”是htmlentity编码?比如“&amp; lt; p&amp; gt;” (看一下页面的源代码)

otehrwise这将取代所有标签,也取代了htmlentity编码的标签,但是这个p-tag几乎是明显的htmlentity编码,所以先试试......

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

答案 2 :(得分:1)

就我而言,我应该使用htmlspecialchars_decode($str);html_entity_decode($firstArticle->introtext)似乎不适合我。

有时我必须先使用htmlentities

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