前端过滤关键字
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,
千家信息网最后更新 2025年01月26日前端过滤关键字
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安全错误
数据库的锁怎样保障安全
fifqol4数据库
网络安全行业属性
深圳智能手环软件开发
java和计算机网络技术
网络安全漏洞的类型以及特征
方舟进化搜索不到非专用服务器
随着信息技术网络技术
《网络安全法》的特征有
天津常见软件开发配置
关注网络安全 建设活动
物联网中的无线网络技术
巨头科技互联网公司
哔哩哔哩服务器账号
okhttp服务器总是连不上
软件开发物语下载
服务器管理中心是干什么的
python3创建数据库
魔兽世界 哪个服务器
2b2t手游良心服务器
linux数据库放在
集安软件开发项目管理在线咨询
曙光服务器一直卡在logo
安全风险管控系统服务器地址
网络安全 2020提案
服务器状态暂停服务
网络安全法治安全主题班会
mips服务器
相片上传云服务器怎么关
网络安全工程师哪里可以学
手机服务器ip地址更改