22

我有以下代码:

<?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 平方公里),是曼哈顿面积的四倍”

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

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

但这也没有用!输出时如何从该字符串中去除所有 HTML 标签(匹配或不匹配)?

4

3 回答 3

80

尝试:

<?php echo strip_tags(html_entity_decode($firstArticle->introtext)); ?>
于 2010-09-23T18:34:09.253 回答
6

很好奇条形标签不起作用....

也许您的“<p>”是 htmlentity 编码的?像“<p>” (看看页面的源代码)

otehrwise 这将替换所有标签,也包括 htmlentity 编码的标签,但很明显,这个 p-tag 只是 htmlentity 编码的,所以首先尝试...

preg_replace('/(?:<|&lt;).*?(?:>|&gt;)/', '', $firstArticle->introtext);
于 2010-09-23T18:00:18.793 回答
1

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

有时我必须先使用htmlentities

        $txt = htmlentities($txt, null, 'utf-8');   
        $txt = htmlspecialchars_decode($txt);
于 2016-12-18T20:14:30.790 回答