剥离<和>在JavaScript中不太有用

时间:2010-10-04 13:11:48

标签: javascript

    function SanitizeInput(input) {



        input = input.replace(/</g, "&lt;");
        input = input.replace(/>/g, "&gt;");


        return input;
    }

document.write(SanitizeInput("Test!<marquee>bibble</marquee>"));

如果您将其弹出到jsfiddle.net,结果为Test!<marquee>bibble</marquee,而不包含尾随&gt;

有谁能解释我做错了什么?

编辑:用(和)替换它似乎完美无缺

3 个答案:

答案 0 :(得分:3)

您的布局/文档中必须有其他内容影响这一点,您的代码本身也能正常运行,you can test it here

答案 1 :(得分:3)

你没有做错任何事。您使用的功能会将所有<替换为&lt;,将>替换为&gt;。只是document.write将已清理的文本添加到HTML文档中,实体将转换回<>

只需尝试alert而不是document.write

如果您确实希望在页面中显示&lt;,则应对文本进行“双重清理”。

input = input.replace(/</g, "&amp;lt;");

在旁注中,您可以链接替换呼叫,如下所示:

input = input.replace(/</g, "&lt;").replace(/>/g, "&gt;");

希望你觉得这很有用,
阿林

答案 2 :(得分:1)

如果您正在尝试清理输入,请尝试这样的操作 - http://xkr.us/articles/javascript/encode-compare/