网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.一个在vbscript中读取cookie的程.
.vbscript和javascript互相调用.
.文本中首字母全改为大写.
.将身份证从15位升级为18位的函数.
.在config.web中保存数据库连接串.
.WebClasses使注册变得容易.
.从手工注入看防御之Access.
.IIS使用10则.
.如何将代码生成的文件设为只读.
.ASP字数计算函数.
.ASP.NET中使用多个runat=server .
.将连接数据库的代码隐藏在DLL中.
.页面延迟的两个简单方法.
.使用ASP重启服务器.
.用IE和SQL2k开发一个XML聊天程序.
.防范sql注入式攻击js版本.
.远程连接access数据库的方法.
.一条sql 语句搞定数据库分页.
.从 ASP Web 页返回 XML.
.判断函数是奇数还是偶数.

ASP中轻松实现变量名-值变换

发表日期:2004-7-10


nhconch [原作]

  用过PHP的朋友都知道,PHP中变量的使用灵活方便,特别是能在字符串中方便实现变量名-值变换,使得整个PHP代码更显简洁优美。比如一条更新数据库的SQL语句只需写成:"update users set password='$password', group=$group, name='$username' where account='$account'",其中的$password、$group、$username、$account便会被实际的变量值替换,而在ASP中要实现相同的功能必须写成:"update useres set password='" & password & "',group=" & group & ",name='" & username & "' where account='" & account & "'",显得冗长难看。如果这是一条insert语言而且插入的字段内容很多的话,那么查看字段与values的对应关系将会是一个痛苦的过程。

  现在让我们看看如何在ASP实现类似的变量名-值变换。

思路

  首先,必须有一个方法把需要用实际值替换的变量名与普通的文本区分出来;然后,把所有找到的变量名用它所代表的实际值替换掉。
  对于第一点可以通过正则表达式查找得到,这里我们不采用PHP的变量表示方式,而采用大托号{}作为变量名的边界符,字符串表示变为password='{password}',group={group}。
  第二点是变量名-值变换的关键,通过变量名得到变量值。查看ASP资料没有找到直接实现的方法,但有一个函数Execute引起我们的注意,从资料说明中可知Execute可以执行传入的有效的字符串作为代码执行同,这样只要编写一个小函数就可以实现我们的要示。核心代码为:
function GetVar(var_name)
    Execute("function get_value(): get_value=" & var_name  & ": end function")
    getvar=get_value()
end function

实现

完整代码:
function GetVar(var_name)
    Execute("function get_value(): get_value=" & var_name  & ": end function")
    getvar=get_value()
end function

function Txt2Value(str, level)
    dim regEx, Matches, Result
    Set regEx = new RegExp
    select case level
        case 0 regEx.Pattern = "\{(\w+)\}"              '变量名有效
        case 1 regEx.Pattern = "\{([\w+\-\*/\\<>=]+)\}" '变量名及运算符有效
        'case 2 regEx.Pattern = "\{([\w\s]+)\}"   '除换行符外的所有字符有效
        case else exit function
    end select
    'regEx.Pattern = "\{(\w+)\}"
    regEx.IgnoreCase = true
    regEx.Global = true
    Set Matches = regEx.Execute(str)
    Result = str
    'response.write Matches.Count
    For Each Match In Matches
        Result = Replace(Result, Match.Value, GetVar(Match.SubMatches(0)))
    Next
    set Matches = nothing
    set regEx = nothing
    Txt2Value = Result
end function

function Var2Value(var_name)
    Var2Value = Txt2Value(var_name, 0)
end Function

调用方法:
Var2Value("update users set password='{password}', group={group}, name='{username}' where account='{account}'"
  Var2Value调用了Txt2Value,Txt2Value找出所有变量名交调用GetVar得到变量值并进行替换。实际上直接调用Txt2Value(str,1)还允许对字符串值进行四则运算。

 

上一篇:在ASP中取得服务器网卡的MAC地址、DNS地址等网络信息 人气:14600
下一篇:巧用缓存提高asp程序的性能 人气:11819
浏览全部变量的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐