Javascript拆分方法:特殊字符

时间:2011-12-30 21:29:04

标签: jquery split character

我在我的网站上聊了一会儿。 我希望用户能够这样做: 当他输入:P等特殊字符时,会显示一个图标 我用这段代码做到了这一点:

chat_icons=new Array();

$(".chat_icons img").each(function(index){
    chat_icons[index]=$(this).attr("title");
});

$.each(chat_icons, function(index, value) { 
    var msg_array=new Array();
    msg_array=message.split(value);
    message="";

    for(j=0;j<msg_array.length;j++){
        message+=msg_array[j];
        url=index+1;
        img_msg="<img src=\"/apps/chat/icons/"+url+".png\" title=\""+value+"\" />";
        message+=img_msg;
    };

    message=message.substr(0,message.length-img_msg.length);
});

此代码运行良好。 我要做的第二件事是当聊天用户输入YouTube网址时,会显示一个链接。 我试着这样做:

msg_array=new Array();
msg_array=message.split("http://www.youtube.com/watch");
message="";

for(j=0;j<msg_array.length;j++){
    if(j / 2==0){
        message+=msg_array[j];
    }
    else {
        youtube_array=new Array();
        youtube_array=msg_array[j].split(" ");
        message+="<a href=\"http://www.youtube.com/watch"+youtube_array[0]+"\" target=\"_blank\">http://www.youtube.com/watch"+youtube_array[0]+"</a> ";
        for(k=1;k<youtube_array.length;k++){
            message+=youtube_array[k]+" ";
        }
    }
}

此代码给出了以下结果:

http:/ /www. youtube.com/ watch?v=some_id -->works
http:/ /www. youtube.com /watch?v=some_id chat text chat text     
http://www.youtube.com/watch?v=some_id ---> works
http:/ /www. youtube.com/ watch?v=some_id&feature=something -->don't work
http:/ /www. youtube.com/ watch?v=some_id&feature=something anything else --> doesn't work

最后两个示例为我提供了此代码<a href="http:/ /www. youtube.com/watch?v=some_id">http:/ /www.youtube.com /watch?v=some_id</a>

所以我对特殊字符有疑问。 我该如何解决这个问题?

我想问的最后一件事是我不希望用户进行JavaScript / HTML注入。 我想要的唯一方法是我上面说的两个。示例:如果用户键入</body>,则我无法看到它,因为我使用$(".message").html(...)

如果我使用.text()我解决了最后一个问题,但我看不到图片和youtube链接。

我剪切youtube_url因为系统认为我是垃圾邮件发送者。

jsfiddle代码:http://jsfiddle.net/Fb9kA/1/

YouTube网址的&字符与data: "name="+$(".chat_username").val()+"&message="+$(".chat_text").val(),

混淆

我已将其修改为:data: "name="+escape($(".chat_username").val())+"&message="+escape($(".chat_text").val()),

0 个答案:

没有答案