本文为您介绍字符串类型相关函数的语法、说明、参数、返回值和示例。
substr
- 语法:
substr(s, i, j)
。 - 说明
字符串截取操作。
- 参数
- s:目标字符串。
- i:整型,截取起始下标。从1开始,-1表示字符串最尾字符。
- j:整型,截取终止下标。从1开始,-1表示字符串最尾字符。
- 返回值
返回
s
的子字符串s[i, j]
。 - 示例
//说明:判断文件类型是否为.m3u8的2种方法 if eq(substr($uri, -5, -1), '.m3u8') { say(concat($uri, ' is .m3u8')) } uri_len = len($uri) if eq(substr($uri, -5, uri_len), '.m3u8') { say(concat($uri, ' is .m3u8')) }
concat
- 语法:
concat(s1, ...)
。 - 说明
字符串连接操作。
- 参数
一个或多个参数,参数类型允许为数字字符串。
- 返回值
将多个参数连接为一个字符串,并返回该字符串。
- 示例
//说明:判断文件类型是否为.m3u8的2种方法 if eq(substr($uri, -5, -1), '.m3u8') { say(concat($uri, ' is .m3u8')) } uri_len = len($uri) if eq(substr($uri, -5, uri_len), '.m3u8') { say(concat($uri, ' is .m3u8')) }
upper
- 语法:
upper(s)
。 - 说明
大写操作。
- 参数
s:目标字符串。
- 返回值
返回大写
s
。 - 示例
//输出: //HELLO,DSL //hello, dsl mystr = 'Hello, Dsl' say(upper(mystr)) say(lower(mystr))
lower
- 语法:
lower(s)
。 - 说明
小写操作。
- 参数
s:目标字符串。
- 返回值
返回小写
s
。 - 示例
//输出: //HELLO,DSL //hello, dsl mystr = 'Hello, Dsl' say(upper(mystr)) say(lower(mystr))
len
- 语法:
len(s)
。 - 说明
获取字符串的长度。
- 参数
s:目标字符串。
- 返回值
返回
s
的长度,整型。 - 示例
//说明:判断文件类型是否为.m3u8的2种方法 if eq(substr($uri, -5, -1), '.m3u8') { say(concat($uri, ' is .m3u8')) } uri_len = len($uri) if eq(substr($uri, -5, uri_len), '.m3u8') { say(concat($uri, ' is .m3u8')) }
byte
- 语法:
byte(c)
。 - 说明
获取字符的ASCII码。
- 参数
c:目标字符,必须为单个字符。
- 返回值
返回对应的ASCII码,数字类型。
- 示例
//输出:97 //65 say(byte('a')) say(byte('A'))
match_re
- 语法:
match_re(s, p [, o])
。 - 说明
使用PCRE正则引擎,进行正则匹配。
- 参数
- s:目标字符串,字符类型。
- p:正则表达式,字符类型。
- o:正则引擎参数,字符类型,可选。
- i :大小写不敏感。
- 返回值
匹配成功返回
true
,否则返回false
。 - 示例
url = concat('http://', $host, $uri) m1 = match_re(url, 'http://.*\.dslex\.com/.*') m2 = match_re(url, '^http://.*\.alibaba\.com\.cn/.*\.d\\.html(\?.*)?$') m3 = match_re(url, '^http://.*.test.dslex.com/.*\.d\.html(\?.*)?$') m4 = match_re(url, '^http://.*\.alibaba\.com\.cn/zt_d/') m5 = match_re(url, '^http://tech.alibaba.com.cn/zt_d/we2015/?$') m6 = match_re($args, 'from=wap1$') m7 = match_re($args, 'from=comos1$') if and(m1, or(m2, m3), not(m4), not(m5), or(not(m6), not(m7))) { add_rsp_header('USER-DEFINED-1', 'hit1') add_rsp_header('USER-DEFINED-2', 'hit2')
capture_re
- 语法:
capture_re(s, p [,init])
。 - 说明
正则捕获,并返回捕获结果。使用PCRE正则引擎。
- 参数
- s:目标字符串,字符类型。
- p:正则表达式,字符类型。
- init:指定匹配开始位置,下标从1开始,整型。
- 返回值
匹配成功的若干子串通过字典类型返回,匹配失败返回空字典。
- 示例
pcs = capture_re($request_uri,'^/([^/]+)/([^/]+)([^?]+)\?(.*)') sec1 = get(pcs, 1) sec2 = get(pcs, 2) sec3 = get(pcs, 3) if or(not(sec1), not(sec2), not(sec3)) { add_rsp_header('X-TENGINE-ERROR', 'auth failed - missing necessary uri set') exit(403) } digest = md5(concat(sec1, sec3)) if ne(digest, sec2) { add_rsp_header('X-TENGINE-ERROR', 'auth failed - invalid digest') exit(403) }
gsub_re
- 语法:
gsub_re(subject, regex, replace [,option])
。 - 说明
正则替换,并返回替换后的副本。使用PCRE正则引擎。
- 参数
- subject:目标字符串,字符类型。
- regex:正则表达式,字符类型。
- replace:替换字符,字符类型。
replace
部分可以引用匹配部分,即:- $0:表示
regex
整体匹配的部分。 - $N:表示
regex
第N个()
匹配的部分。
- $0:表示
- option:正则引擎参数,字符类型,可选。
- 返回值
subject
中所有的符合参数regex
的子串都将被参数replace
所指定的字符串所替换,并返回替换后的副本。 - 示例
//输出: //X-DEBUG-GSUB-RE: [Hello,H], [Es,E] subject = 'Hello, Es' regex = '([a-zA-Z])[a-z]+' replace = '[$0,$1]' add_rsp_header('X-DEBUG-GSUB-RE', gsub_re(subject, regex, replace))
- 参考
PCRE正则语法:pcre2syntax man page。
split
- 语法:
split(s [,sep])
。 - 说明
分隔字符串,并返回分隔结果。
- 参数
- s:目标字符串,字符类型。
- sep:字符类型。
- 返回值
分隔元素包含在字典类型中返回,由数字下标作
key
,起始下标为1,例如:[1]=xx, [2]=yy;若sep
为空,则默认以任意空白字符分隔。默认空白字符包含:空格、Tab。 - 示例
//请求:?from=xx1,xx2,xx3 //响应:[1]=xx1 //[2]=xx1 if $arg_from { t = split($arg_from, ',') if get(t, 1) { say(concat('[1]=', get(t, 1))) } if get(t, 2) { say(concat('[2]=', get(t, 1))) } }
split_as_key
- 语法:
split_as_key(s [,sep])
。 - 说明
分隔字符串,并返回分隔结果。
- 参数
- s:目标字符串,字符类型。
- sep:分隔符,字符类型。
- 返回值
同
split()
,区别在于key
:[分割元素]
->[分割元素]
。 - 示例
//请求:?from=xx1,xx2,xx3 //响应:xx2=xx2 u=hi,dsl //xx1=xx1 u=hi,dsl //xx3=xx3 u=hi,dsl def echo_each(k, v, u) { s = concat(k, '=', v, ' u=', get(u, 1)) say(s) } if $arg_from { t = split_as_key($arg_from, ',') foreach(t, echo_each, ['hi,dsl']) }
tohex
- 语法:
tohex(s)
。 - 说明
十六进制转换。
- 参数
s:字符串。
- 返回值
返回
s
的十六进制可读形式。 - 示例
//说明:增加响应头 //X-DSL-TOHEX: 4ad583af22c2e7d40c1c916b2920299155a46464 digest = sha1('xxxx') add_rsp_header('X-DSL-TOHEX', tohex(digest))
tostring
- 语法:
tostring(a)
。 - 说明
字符串类型转换。
- 参数
a:任意类型。
- 返回值
返回参数
a
转换后的字符串。 - 示例
//说明:增加响应头 //X-DSL-TOSTRING: 123 s = tostring(123) add_rsp_header('X-DSL-TOSTRING', s)
tochar
- 语法:
tochar(n1, n2, ...)
。 - 说明
- 接受1个或多个整型参数,返回对应整型参数的内部数值表示的字符串,例如:48对应于字符“0”。
- 返回字符串的长度为参数个数。
- 参数
nX:整型参数。
- 返回值
返回转换后的字符串。
- 示例
//输出:增加响应头 //X-DSL-TOCHAR: a //X-DSL-TOCHAR: ab add_rsp_header('X-DSL-TOCHAR', tochar(97)) add_rsp_header('X-DSL-TOCHAR', tochar(97, 98), true) //输出:增加响应头 //Content-Disposition: attachment;filename="请求参数filename的值" if $arg_filename { hn = 'Content-Disposition' add_rsp_header('Content-Disposition', concat('attachment;filename=', tochar(34), filename, tochar(34))) add_rsp_header(hn, hv) }
在文档使用中是否遇到以下问题
更多建议
匿名提交