有一句话叫做“天不怕,地不怕,就怕四川人讲普通话”,做为一个南方人,学普通话最头痛的就是平舌和翘舌、鞭音和鼻音、二声和三声、前鼻音和后鼻音通通搞不清楚,尤其是在学习成语的过程中,单单一个“真才实学”的“真”字,四川人就可以给出zen、zhen、zeng、zheng四种注音,有时侯听别人讲到一句成语,想用到自己的文章中来,却又不知道应该如何写的时侯就犯嘀咕了,不管是形码还是声码,都不能满足自己的要求。
<%
function gsxy(str)
dim s,a,b,newstr
s=" "&lcase(str)&" "
a=array("ɑ","ā","á","ǎ","à","a","ē","é","ě","è","ê","ī","í","ǐ","ì","ō","ó","ǒ","ò","ū","ú","ǔ","ù","ǖ","ǘ","ǚ","ǜ","ü"," l"," ch"," zh"," sh","ing ","eng ")
b=array("a","a","a","a","a","a","e","e","e","e","e","i","i","i","i","o","o","o","o","u","u","u","u","v","v","v","v","v"," n"," c"," z"," s","in ","en ")
for ii=0 to ubound(a)-1
s=replace(s,a(ii),b(ii))
next
gsxy=replace(s," "," ")
end function
%>
我在做“快典网”的成语词典时也碰到了同样的问题,当时就在想,能不能把这个词典添加一个支持谐音搜索的功能呢?正好我手上有一个支持多音字自动注音的程序,我在数据库中添加了一个字段“xy”,将每个成语的音标使用下面的函数进行替换:
如果用户在搜索时选择了“谐音搜索”的选项,就先把请求关键词进行标注,然后再用这个函数进行替换后再与数据库进行比对,给出正确的结果。各位可以去:http://cy.kdd.cc/ 测试一下效果。