1

preタグ内のコンテンツ以外のhtmlタグを削除するにはどうすればよいですか?

コード

$content="
    <div id="wrapper">

    Notes


    </div>


    <pre>
    <div id="loginfos">asdasd</div>

    </pre>
";

strip_tags($ content、'')を使用しているときに、preタグ内のhtmlが削除されすぎています。しかし、事前に内部のhtmlを削除したくありません

4

7 に答える 7

2

試す :

echo strip_tags($text, '<pre>');
于 2010-12-09T07:34:05.297 に答える
1

次の操作を行うことができます。

  1. preg_replaceを「e」修飾子とともに使用して、preタグの内容を@@@ 1 @@@、@@@ 2 @@@などの文字列に置き換え、この内容を配列に格納します。
  2. strip_tags()を実行します
  3. 'e'修飾子を指定してpreg_relaceを再度実行し、@@@1@@@などを元のコンテンツに復元します。

少し厄介ですが、動作するはずです。

于 2010-12-09T07:38:08.450 に答える
1
 <?php 
                    $document=html_entity_decode($content);
                    $search = array ("'<script[^>]*?>.*?</script>'si","'<[/!]*?[^<>]*?>'si","'([rn])[s]+'","'&(quot|#34);'i","'&(amp|#38);'i","'&(lt|#60);'i","'&(gt|#62);'i","'&(nbsp|#160);'i","'&(iexcl|#161);'i","'&(cent|#162);'i","'&(pound|#163);'i","'&(copy|#169);'i","'&#(d+);'e");
                    $replace = array ("","","\1","\"","&","<",">"," ",chr(161),chr(162),chr(163),chr(169),"chr(\1)");
                    $text = preg_replace($search, $replace, $document); 
                    echo $text;
                    ?>
于 2010-12-09T07:31:50.227 に答える
1
$text = 'YOUR CODE HERE';

$org_text = $text;

// hide content within pre tags
$text = preg_replace( '/(<pre[^>]*>)(.*?)(<\/pre>)/is', '$1@@@pre@@@$3', $text );
// filter content
$text = strip_tags( $text, '<pre>' );
// insert back content of pre tags
if ( preg_match_all( '/(<pre[^>]*>)(.*?)(<\/pre>)/is', $org_text, $parts ) ) {
    foreach ( $parts[2] as $code ) {
        $text = preg_replace( '/@@@pre@@@/', $code, $text, 1 );
    }
}

print_r( $text );
于 2013-07-03T11:09:48.250 に答える
0

OK !、あなたはただ1つの選択肢を残します:正規表現...誰もそれらを好きではありませんが、彼らは確かに仕事を成し遂げます。まず、問題のあるテキストを次のような奇妙なものに置き換えます。

preg_replace("#<pre>(.+?)</pre>#", "||k||", $content);

これは効果的にあなたを変えるでしょう

<pre> blah, blah, bllah....</pre>

他の何かのために、そしてそれから電話してください

strip_tags($content);

その後、|| k ||(または選択したもの)の元の値を置き換えるだけで、目的の結果が得られます。

于 2010-12-09T07:35:53.600 に答える
0

あなたのコンテンツは$content変数にうまく保存されていないと思います

内側の二重引用符を一重引用符に変換して一度確認できますか

$content="
    <div id='wrapper'>

    Notes


    </div>


    <pre>
    <div id='loginfos'>asdasd</div>

    </pre>
";


strip_tags($content, '<pre>');
于 2010-12-09T07:36:14.380 に答える
0

次の操作を実行できます。

preg_replace 修飾子を使用して、pre タグの内容を、 など'e'の文字列に置き換え、この内容を配列に保存します。@@@1@@@@@@2@@@strip_tags()

などを元の内容'e'に戻すには、修飾子を指定して preg_relace を再度実行します。@@@1@@@

少し不器用ですが、うまくいくはずです。

完全なコードを書いてください。わかったけど何かがおかしい。完全なプログラミングコードを書いてください

于 2015-12-23T18:41:29.660 に答える