tags:

views:

54

answers:

2

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?

+2  A: 

very curious that strip-tags does not work....

maybe your "<p>" is htmlentity-encoded? like "&lt;p&gt;" (have a look at the page's sourcecode)

otehrwise this will replace all tags, also htmlentity-encoded ones, but it's nearly obvious that this p-tag is simply htmlentity-encoded so try that first...

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

try:

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