Подтвердить что ты не робот

Почему strip_tags не работает в PHP?

У меня есть следующий код:

<?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 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> Этим летом на северо-западной стороне Гренландии гигантский кусок льда отскакивал от ледника Петерманн на северо-западной стороне Гренландии. Площадь почти в квадратных километрах (260 кв. км), в четыре раза превышающая размер Манхэттена, /p >

Тег <p> является проблемой для меня в этом приложении, однако strip_tags категорически отказывается удалить его, и я не могу понять, почему. Я фактически отказался от strip_tags и попытался сделать preg_replace вместо этого с regex/<(.|\n)*? > /:

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

Но это тоже не сработало! Как я могу удалить все теги HTML (совпадающие или нет) из этой строки при ее выводе?

4b9b3361

Ответ 1

попробовать:

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

Ответ 2

очень любопытно, что strip-tags не работает....

возможно, ваш "<p> " кодируется htmlentity? как "& lt; p & gt;" (посмотрите на исходный код страницы)

otehrwise это заменит все теги, также закодированные htmlentity, но почти очевидно, что этот p-тег просто закодирован в htmlentity, поэтому сначала попробуйте...

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

Ответ 3

В моем случае я должен использовать htmlspecialchars_decode($str);. html_entity_decode($firstArticle->introtext), похоже, не работает для меня.

Иногда мне приходится сначала использовать htmlentities.

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