说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何处理备注字段的存储及显示?

编辑:说三道四文库 发布时间:2018-06-18 08:06
HTML文档下载 WORD文档下载 PDF文档下载
我程序中使用以下函数处理备注型字段
Function ChkString(str)
  str=replace(str," "," ")
  str=replace(str,Chr(10),"<br>")
  str=replace(str,Chr(13),"")
  ChkString = str
End Function

然后进行
rs.addnew
……
if Request.Form ("c_bz")<>"" then
  '**这里通过response.write输出request.form("c_bz")的效果是正确的
  rs("bz")=ChkString(Request.Form ("c_bz"))
end if
……
rs.update

但是察看数据表发现在输入的数据中空格之后或者回车之后的东东还是没有了,上述函数好像没有起到把空格替代为“&nbsp;”,把回车替代为“<br>”。保存都没有成功,不要说正确输出了。不知各位如何处理这个问题的?另外,如果输入的内容包括那种转义字符、html代码,会不会出问题?


给你一个函数,包含进去,在加入时调用
<%
function htmlencode2(str)
    dim result
    dim l
    if isNULL(str) then 
       htmlencode2=""
       exit function
    end if
    l=len(str)
    result=""
dim i
for i = 1 to l
    select case mid(str,i,1)
              case chr(13)
                result=result+"<br>"
           case chr(34)
                result=result+"&quot;"
              case chr(32)            
                'result=result+"&nbsp;"
                if i+1<=l and i-1>0 then
                   if mid(str,i+1,1)=chr(32) or mid(str,i+1,1)=chr(9) or mid(str,i-1,1)=chr(32) or mid(str,i-1,1)=chr(9)  then                       
                      result=result+"&nbsp;"
                   else
                      result=result+" "
                   end if
                else
                   result=result+"&nbsp;"                     
                end if
           case chr(9)
                result=result+"    "
           case else
                result=result+mid(str,i,1)
         end select
       next 
       htmlencode2=result
   end function
%>
<%xx=htmlencode2(request.form(""))%>
Function ChkString(str)
  str=replace(str," ","&nbsp;&nbsp;")  '两个&nbsp;&nbsp;是一个空格
  str=replace(str,vbcr,"<br>")        ’用vbcr
  ChkString = str
End Function
最好再将回复人:freezwy(网络自由人):给的函数增加禁止"<"和">"的功能,比较安全。
谢谢两位的回答。
但是如果用str=replace(str,vbcr,"<br>")的话,保存到表中字段里面的值只到<br为止。
比如我输入如下:
    1998年 获得
    硕士学位
这样再去查看表中的内容,发现该字段的值为“ 1998年&nbsp;获得<br ”,“<br>”只保存了一半,再后面就没有东西了。不知为什么?
gz
不会吧。
str=replace(str,vbcrlf,"<br>")吧        
把vbcr换成vbcrlf之后,依然老样子,我真是有点懵了,照理说这并不是什么特别复杂的问题,不知会不会有其他什么原因?会不会和Access表中字段的设置有关?
str=replace(str,chr(13)&chr(10),"<br>")

我刚试过!
text = request.form("text")  
    text = server.htmlencode(text)
    text = replace(text," ","&nbsp;")
    text = replace(text,chr(13)&chr(10),"<br>") 
    text = request.form("text")  
    text = server.htmlencode(text)
    text = replace(text," ","&nbsp;")//不需要两个&nbsp;
    text = replace(text,chr(13)&chr(10),"<br>") 
真是大意失荆州啊,原来在
if Request.Form ("c_bz")<>"" then
  '**这里通过response.write输出request.form("c_bz")的效果是正确的
  rs("bz")=ChkString(Request.Form ("c_bz"))
end if
上述代码中的request.Form("c_bz"))是获取前一表单中的隐藏字段,而我的隐藏字段中的Value后面的双引号没有加是罪魁祸首,也就是说我出错时候的代码是:
<input name="c_bz" type="hidden" value=<%=c_new_bz%>>
修改之后为:
<input name="c_bz" type="hidden" value="<%=c_new_bz%>">
                                             ^———————^———引号
以后我再也不敢偷懒了:-)
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘