前端过滤关键字
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,
千家信息网最后更新 2025年12月02日前端过滤关键字
| xmlns="http://www.w3.org/1999/xhtml"> | |
| http-equiv="Content-Type" content="text/html; charset=gb2312" /> | |
| body | |
| { | |
| font-size: 14px; | |
| } | |
| h3 | |
| { | |
| display: inline; | |
| margin: 0; | |
| } | |
| #spnKeyNum, #spnWordNum | |
| { | |
| color: #F00; | |
| } | |
| #spnList a | |
| { | |
| font-size: 12px; | |
| color: #0000FF; | |
| } | |
| #spnTime | |
| { | |
| color: #600; | |
| } | |
| textarea, #divDisplay | |
| { | |
| margin: 0; | |
| padding: 0; | |
| font-size: 14px; | |
| display: block; | |
| background: #EEE; | |
| border: #999 solid 1px; | |
| } | |
| #txtKeys | |
| { | |
| width: 95%; | |
| height: 100px; | |
| } | |
| #txtContent, #divDisplay | |
| { | |
| height: 400px; | |
| width: 95%; | |
| } | |
| #divDisplay | |
| { | |
| display: none; | |
| overflow: auto; | |
| } | |
| #divDisplay em | |
| { | |
| color: #F00; | |
| font-style: normal; | |
| } | |
| #divFoot | |
| { | |
| padding: 5px; | |
| width: 95%; | |
| } | |
| #spnLable2 | |
| { | |
| margin: 5px; | |
| float: left; | |
| color: #690; | |
| } | |
| button | |
| { | |
| float: left; | |
| } | |
| #desc | |
| { | |
| color: #333; | |
| float: right; | |
| } | |
| onload="handleLoad();"> | |
id="divTop"> | |
| 关键字 | |
| id="spnLable1">(id="spnKeyNum">0个) | |
| id="spnList"> | |
| href="_javascript:load('city.txt');">世界城市 | |
| href="_javascript:load('words.txt');">部分英文单词 | |
| href="_javascript:load('idiom.txt');">成语全集 | |
id="divMain"> | |
| ="txtKeys" onchange="handleKeyChange();"> | |
| 内容 | |
| id="spnLable1">(id="spnWordNum">0字) | |
| ="txtContent" onchange="handleContentChange();"> | |
id="divDisplay"> | |
id="divFoot"> | |
| id="spnLable2">搜索用时: id="spnTime">0ms | |
| ="btnStart" onclick="handleClick();"> 测试 | |
| ="btnReset" onclick="reset()" disabled="disabled"> 重置 | |
| id="desc">EtherDream 2009 | |
| var tblRoot; | |
| /* | |
| * 函数: makeTree | |
| * 注释: 将关键字生成一颗树 | |
| */ | |
| function makeTree() | |
| { | |
| var strKeys = objKeys.value; | |
| var arrKeys = strKeys.split(""); | |
| var tblCur = tblRoot = {}; | |
| var key; | |
| for(var i=0,n=arrKeys.length; i | |
| { | |
| key = arrKeys[i]; | |
| if(key == ';') //完成当前关键字 | |
| { | |
| tblCur.end = true; | |
| tblCur = tblRoot; | |
| continue; | |
| } | |
| if(key in tblCur) //生成子节点 | |
| tblCur = tblCur[key]; | |
| else | |
| tblCur = tblCur[key] = {}; | |
| } | |
| tblCur.end = true; //最后一个关键字没有分割符 | |
| } | |
| /* | |
| * 函数: search | |
| * 注释: 标记出内容中关键字的位置 | |
| */ | |
| function search(content) | |
| { | |
| var tblCur; | |
| var i = 0; | |
| var n = content.length; | |
| var p, v; | |
| var arrMatch = []; | |
| while(i < n) | |
| { | |
| tblCur = tblRoot; | |
| p = i; | |
| v = 0; | |
| for(;;) | |
| { | |
| if(!(tblCur = tblCur[content.charAt(p++)])) | |
| { | |
| i++; | |
| break; | |
| } | |
| if(tblCur.end) //找到匹配关键字 | |
| v = p; | |
| } | |
| if(v) //最大匹配 | |
| { | |
| arrMatch.push(i-1, v); | |
| i = v; | |
| } | |
| } | |
| return arrMatch; | |
| } | |
| var $ = function(id){return document.getElementById(id)}; | |
| var objKeys = $("txtKeys"); | |
| var objContent = $("txtContent"); | |
| var objDisplay = $("divDisplay"); | |
| var bKeyChanged = false; | |
| function handleKeyChange() | |
| { | |
| var str = objKeys.value; | |
| var n; | |
| if(str.length==0) | |
| n = 0; | |
| else | |
| n = str.split(";").length; | |
| /* | |
| * 显示关键字数量 | |
| */ | |
| $("spnKeyNum")[xss_clean] = n; | |
| bKeyChanged = true; | |
| } | |
| function handleContentChange() | |
| { | |
| /* | |
| * 显示内容长度 | |
| */ | |
| $("spnWordNum")[xss_clean] = objContent.value.length; | |
| } | |
| function handleLoad() | |
| { | |
| handleKeyChange(); | |
| handleContentChange(); | |
| } | |
| function handleClick() | |
| { | |
| var strContent = objContent.value; | |
| var arrMatch; | |
| var arrHTML = []; | |
| var strHTML; | |
| var mid; | |
| var p = 0; | |
| $("btnStart").disabled = true; | |
| $("btnReset").disabled = false; | |
| if(bKeyChanged) | |
| { | |
| makeTree(); | |
| bKeyChanged = false; | |
| } | |
| /* | |
| * 开始搜索! | |
| */ | |
| var t = +new Date(); | |
| arrMatch = search(strContent); | |
| /* | |
| * 搜索用时 | |
| */ | |
| $("spnTime")[xss_clean] = +new Date() - t; | |
| /* | |
| * 标记关键字 | |
| */ | |
| for(var i=0,n=arrMatch.length; i | |
| { | |
| mid = arrMatch[i]; | |
| arrHTML.push(strContent.substring(p, mid), | |
| "", | |
| strContent.substring(mid, p = arrMatch[i+1]), | |
| ""); | |
| } | |
| arrHTML.push(strContent.substring(p)); | |
| strHTML = arrHTML.join("").replace(/\n/g, " "); | |
| /* | |
| * 显示结果 | |
| */ | |
| objDisplay[xss_clean] = strHTML; | |
| objContent.style.display = "none"; | |
| objDisplay.style.display = "block"; | |
| } | |
| function reset() | |
| { | |
| $("btnStart").disabled = false; | |
| $("btnReset").disabled = true; | |
| objContent.style.display = "block"; | |
| objDisplay.style.display = "none"; | |
| } | |
| function load(file) | |
| { | |
| /* | |
| * 创建HTTP组件 | |
| */ | |
| if(window.ActiveXObject) | |
| { | |
| objHttp = new ActiveXObject("Microsoft.XMLHTTP"); | |
| } | |
| else | |
| { | |
| objHttp = new XMLHttpRequest(); | |
| objHttp.overrideMimeType("text/xml"); | |
| } | |
| objHttp.onreadystatechange = function() | |
| { | |
| if(objHttp.readyState != 4) | |
| return; | |
| objKeys.value = objHttp.responseText; | |
| handleKeyChange(); | |
| }; | |
| /* | |
| * 发送请求 | |
| */ | |
| objHttp.open("GET", file, true); | |
| objHttp.send(null); | |
| } | |
关键
关键字
搜索
内容
函数
标记
注释
生成
最大
世界
位置
全集
单词
城市
成语
数量
组件
结果
节点
部分
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库关系包括哪些元素
竹溪服务软件开发学习
我的世界服务器不安全账号
php数据库乱码转成中文
网络安全犯罪刑事处罚
pc工控软件开发
关于数据库技术的实验报告
外服务器调本机无法跨域代理
淮北市鲲梦互联网科技有限公司
公安系统的软件开发
软件开发的专业认知和未来规划
服务器推荐安全软件有哪些
中外数据库
河南iphone服务器托管
服务器版本低无法上网
苏州同程软件开发如何
手机测试服务器失败
建立数据库的六个步骤
网络技术推荐书
电商终端服务器
网络安全预防诈骗手抄报初中
戴楠发中华网艺术家数据库
网络安全纵深防御的核心
介绍数据库查询对象有哪些
药品价格查询数据库
如何开启手机运动数据库
2019网络安全前沿技术
北美软件开发
关系型数据库最多存取记录
金华电信的dns服务器地址