-2

私はプロジェクトに取り組んでいます。メインページにユーザーの詳細を表示し、すべてのユーザーが自分で詳細を更新します。また、HTMLタグの詳細も許可します。

しかし、私が直面している問題は、人が次のようなHTMLの詳細を追加した場合です。

<p><span style="color:#4c4c4c;font-family:Verdana;">Graphic Designer. Contact ***** .</span></p>

しかし、インデックスページには詳細の文字がほとんど表示されず、このようにメインページに表示されます

<p><span style="color:#4c4c4c;font-family:Verda

これはメインページのすべての構造を乱します。

PHP関数を試しました

strip_tags

これは私にはうまくいきませんでした、そして私はメインページでこれらのタグを取り除くために私自身の関数も書きます

function strip_html_tags( $text )
{
    $text = preg_replace(
        array(
          // Remove invisible content
            '@<head[^>]*?>.*?</head>@siu',
            '@<style[^>]*?>.*?</style>@siu',
            '@<script[^>]*?.*?</script>@siu',
            '@<object[^>]*?.*?</object>@siu',
            '@<embed[^>]*?.*?</embed>@siu',
            '@<applet[^>]*?.*?</applet>@siu',
            '@<noframes[^>]*?.*?</noframes>@siu',
            '@<noscript[^>]*?.*?</noscript>@siu',
            '@<noembed[^>]*?.*?</noembed>@siu',

            '@</?((address)|(blockquote)|(center)|(del))@iu',
            '@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu',
            '@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu',
            '@</?((table)|(th)|(td)|(caption))@iu',
            '@</?((form)|(button)|(fieldset)|(legend)|(input))@iu',
            '@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu',
            '@</?((frameset)|(frame)|(iframe))@iu',
        ),
        array(
            ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',"$0", "$0", "$0", "$0", "$0", "$0","$0", "$0",), $text );


    return strip_tags( $text);
}

これもうまくいきませんでした。

私が必要としているのは、メインページに適切に表示されるようにすべてのhtmlタグを削除することです。

ありがとう

4

3 に答える 3

2

strip_tags()PHPに組み込まれています

HTMLPurifierはさらに堅牢なソリューションです

于 2012-06-28T22:13:56.607 に答える
0

単に使用することを検討しましたhtml_entities()か?これにより、「<」が「&lt;」に置き換えられます。および「>」と「&gt;」とりわけ。それはあなたがそれがページに干渉することをあまり心配することなくそれをページにエコーすることを可能にします。

于 2012-06-28T22:16:48.187 に答える
0

あなたの個人情報は、プレーンテキストではなくエンティティとして保存されているだけではありませんか?それはstrip_tagsが機能しない理由を説明します。

その場合は、 html_entity_decodeを使用して実際のHTMLを表示します。

于 2012-06-28T22:19:48.337 に答える