繁体中文
设为首页
加入收藏
当前位置:程序开发首页 >> CGI >> Perl语言的文字处理模式之三(4)

Perl语言的文字处理模式之三(4)

2006-12-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:范例三:   $string="ww22CGI44";   $string=~s/(d+)/$1*2/e;   (d+)代表要找寻$string中一个或是多个数值的字符串,再将找到的字符串设成 $1。加上参数e是代表要把$l*2当作是一个运算式,所以$string="www44...

范例三:

  $string="ww22CGI44";

  $string=~s/(d+)/$1*2/e;

  (d+)代表要找寻$string中一个或是多个数值的字符串,再将找到的字符串设成

$1。加上参数e是代表要把$l*2当作是一个运算式,所以$string="www44CGI44";

  $string="www22CGI44";

  $string=~s/(d+)/$1*2/eg;

  加上参数e,所以会把$1*2当作是一个运算式来看, 加上参数g就会把全部符合数 值

的字符串经过运算式运算之后再把它取代,所以$string="www44CGI88";

范例四:

  假设原本的字符串是$value="三八!",经CGI数据编码之后,这个字符串就会变成

$value="%A4T%A4K%21"。以下是一个解码的示范程序:

  $value="%A4T%A4K%2l";

  $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($l))/eg;

  在传送CGI数据的时候会把数据编码,其中会将特殊字符或是中文字符编码成以% 开头的连续两个十六进制数的字符串,所以要用s这个函数来找寻这个以%开头的 字符串。为了要把找到的字符串再做解码的处理, 所以要在%这个符号之后加上 ()这个符号, 表示会把找到的字符串记忆起来并指定给$1这个变量,而且要在() 中加上代表是连续两个十六进制数值的文字处理模式(Regular Expression),也 就是[a-fA-F0-9][a-fA-F0-9]。再用hex这个函数($1是代表符合的字符串)把十 六进制数值转成十进制的码,之后再用pack这个函数(以C为参数,是代表 unsigned char value的意思)把这个十进制码还原成原来的字符串。最后就会 把这个字符串解码成$value="三八!"。值得一提的是也可以把这个解码的程序 写成:

  $value=~s/%(..)/pack("C",hex($l))/eg;

责任编辑:admin
相关文章