我用到更新语句,碰到一个棘手的问题:
如果输入的内容里面含有单引号或双引号,它就和代码里面的混合了,分不清楚,我用过replace函数将英文的'转化为中文的‘,但是效果不好,不知道有没有好的方法?
我用到更新语句,碰到一个棘手的问题:
如果输入的内容里面含有单引号或双引号,它就和代码里面的混合了,分不清楚,我用过replace函数将英文的'转化为中文的‘,但是效果不好,不知道有没有好的方法?
' 检查sql字符串中是否有单引号,有则进行转化
function CheckStr(str)
dim tstr,l,i,ch
l=len(str)
for i=1 to l
ch=mid(str,i,1)
if ch="'" then
tstr=tstr+"'"
end if
tstr=tstr+ch
next
CheckStr=tstr
end function
别问我原理,其实我不懂。
等待达人解释原理
我想到一个问题……
如果字符串中本来就有<''>这样的内容,会不会变成<''''>而脱离原来的意思呢?
因为我发的代码不是我写的,所以不是很明白这个问题是怎么解决的。
大家能告诉我一下么?
很奇怪版主的解决方法,Replace(str,"'","''"),为何要用两个单引号来代替,不过这种方法确实解决了问题。
另外,在用文本框将内容重新显示时,如果内容里含有双引号的话,文本框中不知为何,双引号后面的就不能显示了
如:
地 址: |
10'rr"yyyyyy |
用文本框显示:
地 址: |
请问这是什么原因?
哦,上面文本框内容怎么没显示,它里面的内容是:
10'rr,双引号和它后面的内容就没有了,奇怪!!!
自己回答自己的问题:
<input name="tx4" type="text" id="tx42" value=<%=replace(rs("address"),"'","'")%>
这样子解决了。
'字符串检测函数
Function CheckStr(str)
Dim tstr,l,i,ch
l=len(str)'取得要检测的字符串长度
'循环一个字符一个字符的分析整个字符串
for i=1 to l
ch=mid(str,i,1)'取得字符串中的一个字符。
if ch="'" then'如果等于'号
tstr=tstr+"'"'将单引号赋给tstr临时变量
end if
tstr=tstr+ch'将临时变量的字符串和取出来的一个字符进行合并。
next
CheckStr=tstr'返回函数处理结果
End function
这个函数一大问题就是会出现4楼说的现象,原因在于tstr=tstr+ch这句话的出现位置。
假设字符串中某个字符等于'的if语句条件成立,那么就会执行if内的代码,而end if后还会执行后面的代码但是。ch这时等于'就会出现''这种情况。
这个不会有问题Replace是匹配替换的,所以会把符合匹配的字符全替换。