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 平方キロメートル) で、マンハッタンの 4 倍の大きさです。」

この<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でエンコードされていますか?「&lt; p&gt;」のように (ページのソースコードを見てください)

それ以外の場合、これはすべてのタグとhtmlentityでエンコードされたタグを置き換えますが、このpタグが単に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 に答える