substr
項目 | 説明 |
構文 | substr(s, i, j)
|
説明 | 文字列から部分文字列を抽出します。 |
パラメーター | |
戻り値 | サブストリングs[i, j] で指定されたソース文字列から抽出されるs が返されます。 |
例: | 次の方法を使用して、ファイルがM3U8ファイルであるかどうかを判断できます。 方法1: if eq(substr($uri, -5, -1), '.m3u8') {
say(concat($uri, ' is .m3u8'))
}
方法2: uri_len = len($uri)
if eq(substr($uri, -5, uri_len), '.m3u8') {
say(concat($uri, ' is .m3u8'))
}
|
concat
項目 | 説明 |
構文 | concat(s1, ...)
|
説明 | 文字列を連結します。 |
パラメーター | 連結する文字列。 1つ以上の文字列を指定できます。 数値がサポートされています。 |
戻り値 | 連結された文字列。 |
例: | 次の方法を使用して、ファイルがM3U8ファイルであるかどうかを判断できます。 方法1: if eq(substr($uri, -5, -1), '.m3u8') {
say(concat($uri, ' is .m3u8'))
}
方法2: uri_len = len($uri)
if eq(substr($uri, -5, uri_len), '.m3u8') {
say(concat($uri, ' is .m3u8'))
}
|
フォーマット
項目 | 説明 |
構文 | フォーマット (fmt, · · ·)
|
説明 | 1つ以上のパラメータの値をフォーマットします。 format文字列は最初のパラメーターで、文字列を指定する必要があります。 format文字列は、ISO C プログラミング言語の関数で使用されるsprintf パラメーターの仕様に従います。 fmt で指定されたフォーマット文字列の構文は、%[parameter][flag][field width][precision]specifier です。
%%: prints literal percentage signs (%).
%c: converts integers into ASCII characters.
%d: coverts integers into decimal numbers.
%f: converts N-precision numbers into floating point numbers.
%o: converts integers into octal numbers.
%s: converts integers into strings.
%x: converts integers into hexadecimal numbers in lowercase letters.
%X: converts integers into hexadecimal numbers in uppercase letters.
|
パラメーター | |
戻り値 | 文字列です。 |
例: | say(concat('format:', format('%%%s$%.2s$%s$%c$%d$%2.2f$%.2o$%x$%X', 'format', 3.1415926, true, 95, 3.1415926, 3.1415926, 3.1415926, 10, 10)))
出力: format:%format$3.$true$_$3$3.14$03$a$A
|
upper
項目 | 説明 |
構文 | |
説明 | 文字列を大文字に変換します。 |
パラメーター | s: 変換する文字列。 |
戻り値 | s パラメーターで指定された文字列 (大文字) 。
|
例: | mystr = 'Hello, AScript'
say(upper(mystr))
say(lower(mystr))
出力: HELLO, ASCRIPT
hello, ascript
|
lower
項目 | 説明 |
構文 | lower(s)
|
説明 | 文字列を小文字に変換します。 |
パラメーター | s: 変換する文字列。 |
戻り値 | s パラメーターで指定された小文字の文字列。
|
例: | mystr = 'Hello, AScript'
say(upper(mystr))
say(lower(mystr))
出力: HELLO, ASCRIPT
hello, ascript
|
len
項目 | 説明 |
構文 | len(s)
|
説明 | 文字列の長さを照会します。 |
パラメーター | s: クエリする文字列。 |
戻り値 | s パラメーターで指定された文字列の長さ。 データ型: 整数。
|
例: | 次の方法を使用して、ファイルがM3U8ファイルであるかどうかを判断できます。 方法1: if eq(substr($uri, -5, -1), '.m3u8') {
say(concat($uri, 'is .m3u8'))
}
方法2: uri_len = len($uri)
if eq(substr($uri, -5, uri_len), '.m3u8') {
say(concat($uri, ' is .m3u8'))
}
|
バイト
項目 | 説明 |
構文 | |
説明 | 文字のASCII値を照会します。 |
パラメーター | c: ASCII値を照会する文字。 指定できる文字は1文字だけです。 |
戻り値 | 指定した文字のASCII値。 データ型: numeric。 |
例: | say(byte('a'))
say(byte('A'))
出力: 97
65
|
match_re
項目 | 説明 |
構文 | match_re(s, p [, o])
|
説明 | 正規表現マッチングにPerl互換正規表現 (PCRE) エンジンを使用します。 詳細については、「PCRE構文」をご参照ください。 |
パラメーター | |
戻り値 | 文字列が正規表現と一致する場合、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の詳細については、「PCRE構文」をご参照ください。 |
パラメーター | |
戻り値 | 文字列が正規表現と一致する場合、辞書型の一致する部分文字列が返されます。 それ以外の場合、空の辞書が返されます。 |
例: | 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_imm('X-TENGINE-ERROR', 'auth failed - missing necessary uri set')
exit(403)
}
digest = md5(concat(sec1, sec3))
if ne(digest, sec2) {
add_rsp_header_imm('X-TENGINE-ERROR', 'auth failed - invalid digest')
exit(403)
}
|
gsub_re
項目 | 説明 |
構文 | gsub_re(subject, regex, replace [,option])
|
説明 | 文字列のすべての一致を置き換え、置き換え後の文字列を返します。 PCREの詳細については、「PCRE構文」をご参照ください。 |
パラメーター | subject: 一致させたい文字列。 データ型: 文字列。 regex: 正規表現。 データ型: 文字列。 replace: 置換用の文字列。 データ型: 文字列。 一致する部分文字列を使用して、replace パラメーターを指定できます。 option: 正規表現エンジン。 データ型: 文字列。 このパラメーターはオプションです。
|
戻り値 | この関数は、指定されたsubject パラメーターで指定されたregex パラメーターと一致するすべての部分文字列をreplace パラメーターで指定された部分文字列に置き換え、置き換え後の文字列を返します。 |
例: | subject = 'Hello, Es'
regex = '([a-zA-Z])[a-z]+'
replace = '[$0,$1]'
add_rsp_header('X-DEBUG-GSUB-RE', gsub_re(subject, regex, replace))
出力: X-DEBUG-GSUB-RE: [Hello,H], [Es,E]
|
split
項目 | 説明 |
構文 | split(s [,sep])
|
説明 | 文字列を部分文字列の配列に分割し、配列を返します。 |
パラメーター | |
戻り値 | ディクショナリ型のキーと値のペアの配列。 key パラメーターの値は、1から始まる数値です。たとえば、[1]=xx、[2]=yyです。 sep が空の場合、文字列は空白文字で分割されます。 空白文字には、スペース文字とタブ文字 (\t) が含まれます。 |
例: | 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])
|
説明 | 文字列を部分文字列の配列に分割し、配列を返します。 |
パラメーター | |
戻り値 | レスポンスパラメーターは、split() 関数と同じ方法で返されます。 ただし、key パラメーターは、各分割要素にちなんで要素1 → 要素2 という名前が付けられます。 |
例: | 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,ascript'])
}
レスポンス: xx2=xx2 u=hi,ascript
xx1=xx1 u=hi,ascript
xx3=xx3 u=hi,ascript
|
tohex
項目 | 説明 |
構文 | tohex(s)
|
説明 | 文字列を16進文字列に変換します。 |
パラメーター | s: 変換する文字列。 |
戻り値 | s パラメーターで指定された文字列から変換された16進文字列。
|
例: | digest = sha1('xxxx')
add_rsp_header('X-AScript-TOHEX', tohex(digest))
の出力: X-AScript-TOHEX:4ad583af22c2e7d40c1c916b2920299155a46464
|
トビン
項目 | 説明 |
構文 | tobin(str)
|
説明 | 16進文字列をASCII文字列に変換します。 |
パラメーター | str: 変換する16進文字列。 大文字と小文字は区別されません。 |
戻り値 | 文字列です。 |
例: | say(concat('tobin:', tobin('2F2F')))
出力: tobin://
|
tostring
項目 | 説明 |
構文 | tostring(a)
|
説明 | 任意の型のデータを文字列に変換します。 |
パラメーター | a: 変換するデータ。 データ型: 任意の型。 |
戻り値 | パラメーターで指定された値から変換された 文字列。 |
例: | s = tostring(123)
add_rsp_header('X-DSL-TOSTRING', s)
の出力: X-DSL-TOSTRING: 123
|
tochar
項目 | 説明 |
構文 | tochar(n1、n2、...)
|
説明 | |
パラメーター | nX: 変換する整数。 1つ以上の整数を指定できます。 |
戻り値 | 整数から変換された文字列。 |
例: | add_rsp_header('X-DSL-TOCHAR', tochar(97))
add_rsp_header('X-DSL-TOCHAR', tochar(97, 98), true)
//Output: A response header is added.
//X-DSL-TOCHAR: a
//X-DSL-TOCHAR: ab
if $arg_filename {
hn = 'Content-Disposition'
add_rsp_header('Content-Disposition', concat('attachment;filename=', tochar(34), filename, tochar(34)))
}
出力: レスポンスヘッダーが追加されます Content-Disposition: attachment;filename="The value of the filename parameter"
|
reverse
項目 | 説明 |
構文 | |
説明 | 文字列を反転します。 |
パラメーター | str: 反転する文字列。 |
戻り値 | 指定された文字列から反転した文字列。 データ型: CHAR。 |
例: | say(reverse('hello'))
出力: olleh
|
検索
項目 | 説明 |
構文 | string.find (s, substr, pos)
|
説明 | 指定した文字列で部分文字列を検索します。 |
パラメーター | |
戻り値 | |
例: | str = 'hello dsl'
add_rsp_header('string-find()-start', tostring(get(find(str, 'dsl'), 1)))
str = 'hello dsl 12'
add_rsp_header('string-find()-end', tostring(get(find(str, 'dsl'), 2)))
str = 'hello dsl'
add_rsp_header('string-find()-tail-start', tostring(get(find(str, 'dsl', -6), 1)))
str = 'hello dsl 12'
add_rsp_header('string-find()-tail-end', tostring(get(find(str, 'dsl', -6), 2)))
出力: string-find()-start:7
string-find()-end:9
string-find()-tail-start:7
string-find()-tail-end:9
|
トリム
項目 | 説明 |
構文 | trim(s, [, loc])
|
説明 | sパラメーターで指定した文字列の先頭または末尾にあるすべての空白文字を削除し、指定した空白文字が削除された文字列を返します。 |
パラメーター | |
戻り値 | 指定された空白文字が削除された文字列。 |
例: | say(concat('trim():', trim(' abcd ')))
say(concat('trim(left):', trim(' abcd ', 'left')))
say(concat('trim(right):', trim(' abcd ', 'right')))
Output: trim():abcd
trim(left):abcd
trim(right): abcd
|