functions.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // 转义聊天内容中的特殊字符
  2. function replaceContent(content) {
  3. // 支持的html标签
  4. var html = function (end) {
  5. return new RegExp('\\n*\\[' + (end || '') + '(pre|div|span|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)\\]\\n*', 'g');
  6. };
  7. content = (content || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')
  8. .replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/'/g, '&#39;').replace(/"/g, '&quot;') // XSS
  9. .replace(/@(\S+)(\s+?|$)/g, '@<a href="javascript:;">$1</a>$2') // 转义@
  10. .replace(/face\[([^\s\[\]]+?)\]/g, function (face) { // 转义表情
  11. var alt = face.replace(/^face/g, '');
  12. return '<img alt="' + alt + '" title="' + alt + '" src="' + faces[alt] + '">';a
  13. })
  14. .replace(/img\[([^\s]+?)\]/g, function (img) { // 转义图片
  15. return '<img class="layui-whisper-photos" src="' + img.replace(/(^img\[)|(\]$)/g, '') + '" width="100px" height="100px">';
  16. })
  17. .replace(/file\([\s\S]+?\)\[[\s\S]*?\]/g, function (str) { // 转义文件
  18. var href = (str.match(/file\(([\s\S]+?)\)\[/) || [])[1];
  19. var text = (str.match(/\)\[([\s\S]*?)\]/) || [])[1];
  20. if (!href) return str;
  21. return '<a class="layui-whisper-file" href="' + href + '" download target="_blank"><i class="layui-icon">&#xe61e;</i><cite>' + (text || href) + '</cite></a>';
  22. })
  23. .replace(/a\([\s\S]+?\)\[[\s\S]*?\]/g, function (str) { // 转义链接
  24. var href = (str.match(/a\(([\s\S]+?)\)\[/) || [])[1];
  25. var text = (str.match(/\)\[([\s\S]*?)\]/) || [])[1];
  26. if (!href) return str;
  27. return '<a href="' + href + '" target="_blank">' + (text || href) + '</a>';
  28. }).replace(html(), '\<$1 $2\>').replace(html('/'), '\</$1\>') // 转移HTML代码
  29. .replace(/\n/g, '<br>') // 转义换行
  30. return content;
  31. };
  32. // 表情替换
  33. var faces = function () {
  34. var alt = getFacesIcon(), arr = {};
  35. layui.each(alt, function (index, item) {
  36. arr[item] = '/static/service/js/layui/images/face/' + index + '.gif';
  37. });
  38. return arr;
  39. }();
  40. // 表情对应数组
  41. function getFacesIcon() {
  42. return ["[微笑]", "[嘻嘻]", "[哈哈]", "[可爱]", "[可怜]", "[挖鼻]", "[吃惊]", "[害羞]", "[挤眼]", "[闭嘴]", "[鄙视]",
  43. "[爱你]", "[泪]", "[偷笑]", "[亲亲]", "[生病]", "[太开心]", "[白眼]", "[右哼哼]", "[左哼哼]", "[嘘]", "[衰]",
  44. "[委屈]", "[吐]", "[哈欠]", "[抱抱]", "[怒]", "[疑问]", "[馋嘴]", "[拜拜]", "[思考]", "[汗]", "[困]", "[睡]",
  45. "[钱]", "[失望]", "[酷]", "[色]", "[哼]", "[鼓掌]", "[晕]", "[悲伤]", "[抓狂]", "[黑线]", "[阴险]", "[怒骂]",
  46. "[互粉]", "[心]", "[伤心]", "[猪头]", "[熊猫]", "[兔子]", "[ok]", "[耶]", "[good]", "[NO]", "[赞]", "[来]",
  47. "[弱]", "[草泥马]", "[神马]", "[囧]", "[浮云]", "[给力]", "[围观]", "[威武]", "[奥特曼]", "[礼物]", "[钟]",
  48. "[话筒]", "[蜡烛]", "[蛋糕]"]
  49. }