为什么strip_tags在 PHP 中不起作用?

2022-08-30 17:21:37

我有以下代码:

<?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>introtext 引用字符串:

"<p>今年夏天,一大块冰块从格陵兰岛西北侧的彼得曼冰川上凿下来。面积近100平方英里(260平方公里),是曼哈顿的四倍。

在这个应用程序中,标签对我来说是一个问题,但是strip_tags绝对拒绝删除它,我不知道为什么。我实际上放弃了strip_tags,并试图用正则表达式/preg_replace <(.|\n)*?>/ :<p>

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

但这也没有奏效!如何从此字符串中去除所有 HTML 标记(无论是否匹配)在输出时?


答案 1

尝试:

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

答案 2

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

也许你的“<p>”是html实体编码的?像“”(查看页面的源代码)

这将取代所有标签,包括html实体编码的标签,但很明显,这个p标签只是html实体编码的,所以先试试...

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

推荐