你的意思是不是,在页面如果打“z”,转换成汉字对应的一些字,然后再根据这些字,来查数据库,取的相关的数据?
这样麻烦。
一般都是在存数据的时候,就已经转换好了对应的拼音。
比如要存:张**
,在存入数据库的时生成一个对应的拼音:zhang**
,把这个也一起存了,汉字存汉字字段,拼音存拼音字段。
查找时输入z,就直接在拼音字段里查需要的数据。
如果表允许再增加字段,还是加个拼音的字段,查找时候方便,快捷。
网上找个汉字转换拼音的类,把数据处理一下,存进拼音字段里。
这个是汉字转拼音参考:
//参数,中文字符串
//返回值:拼音首字母串数组function makePy(str){
if(typeof(str) != "string")
throw new Error(-1,"函数makePy需要字符串类型参数!")
var arrResult = new Array() //保存中间结果的数组
for(var i=0,len=str.lengthi<leni++){
//获得unicode码
var ch = str.charAt(i)
//检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理
arrResult.push(checkCh(ch))
}
//处理arrResult,返回所有可能的拼音首字母串数组
return mkRslt(arrResult)
}
function checkCh(ch){
var uni = ch.charCodeAt(0)
//如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数
if(uni > 40869 || uni < 19968)
return ch //dealWithOthers(ch)
//检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母
return (oMultiDiff[uni]?oMultiDiff[uni]:(strChineseFirstPY.charAt(uni-19968)))
}
function mkRslt(arr){
var arrRslt = [""]
for(var i=0,len=arr.lengthi<leni++){
var str = arr[i]
var strlen = str.length
if(strlen == 1){
for(var k=0k<arrRslt.lengthk++){
arrRslt[k] += str
}
}else{
var tmpArr = arrRslt.slice(0)
arrRslt = []
for(k=0k<strlenk++){
//复制一个相同的arrRslt
var tmp = tmpArr.slice(0)
//把当前字符str[k]添加到每个元素末尾
for(var j=0j<tmp.lengthj++){
tmp[j] += str.charAt(k)
}
//把复制并修改后的数组连接到arrRslt上
arrRslt = arrRslt.concat(tmp)
}
}
}
return arrRslt
}
//两端去空格函数
String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g,"") }
//查看拼音首字母缩写
function query(){
var str = document.getElementById("txtChinese").value.trim()
if(str == "") return
var arrRslt = makePy(str)
alert(arrRslt)