1

<font>などの廃止されたタグをそのコンテンツに置き換えるスクリプトを作成しようとしています。私たちが持っているのは、次のようなものです。

while($("font").length > 0) {
    $("font").each(function() {
        $(this).replaceWith($(this).html());
    });
}

while ループは、フォント タグがそのコンテンツに置き換えられ、その要素の子の 1 つがフォント タグでもある場合、親と子の両方をキャッチするためです。

私たちの問題は、出力されるコンテンツを制御できないことです。これはクライアントによって入力されます。最近見た不正な HTML の一例は、<p><font><span><font><div></font><strong></strong><strong></div></span></font></p>. 明らかに、これは主に不正な形式であり、理想的な世界では、クライアントは正しく入力します。上記のスクリプトは、適切なブラウザー (Chrome、Firefox、Safari) と驚くべきことに IE 9 で完全に動作します。私たちが目指しているのは、すべてのフォント タグが置き換えられ、その中のコンテンツが引き続き表示されることです。

jQuery または従来の ASP で目的の効果を達成できる方法を知っている人はいますか?

また、この特定のクライアントのケースでは、かなり基本的なものであることに注意してください。置き換えが要求されたタグは 1 つだけです。<i>他のケースには、Word から Web サイトにテキストを転送するときに Word によって追加されるタグ、、、などがあり<b>ます<span>

前もって感謝します、よろしく、リチャード

4

1 に答える 1

0

出力からすべての <font> および </font> タグを置き換える方が簡単ではないでしょうか? これは、特定のケースではまだ検証用の XHTML コード (<span> 内の <div>、閉じられていない <strong>) を配信しませんが、テキストを表示するには十分かもしれません。

正規表現を使用して従来の ASP でこれを行う方法は次のとおりです。

function removeFontTags(s_text)
    dim obj_regex
    set obj_regex = new RegExp

    obj_regex.IgnoreCase = true
    obj_regex.Global = true
    obj_regex.Pattern = "\<\/?font\>"

    removeFontTags = obj_regex.replace(s_text, "")

    set obj_regex = Nothing
end function

Response.Write removeFontTags("<p><font><span><font><div></font><strong></strong><strong></div></span></font></p>")

' returns: <p><span><div><strong></strong><strong></div></span></p>

しかし、必要なものを表示するために、この方法で衛生をさらに追加することもできます。

于 2013-02-11T10:20:29.840 に答える