Why doesn't strip_tags work in PHP?

rushinge picture rushinge · Sep 23, 2010 · Viewed 23.2k times · Source

I've got the following code:

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

Where $firstArticle is a stdClass object:

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

You can see that $firstArticle->introtext refers to the 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"

The <p> tag is a problem for me in this application, however strip_tags absolutely refuses to remove it and I can't figure out why. I actually gave up on strip_tags and attempted to do a preg_replace instead with the regex /<(.|\n)*?>/ :

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

But that didn't work either! How can I strip all HTML tags (matched or not) from this string when I output it?

Answer

The Surrican picture The Surrican · Sep 23, 2010

try:

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