本文为您介绍条件判断相关函数的语法、说明、参数、返回值和示例。
and
函数详细解释如下:
- 语法:
and(arg, ...)
。 - 说明
- 逻辑与运算符。
- 支持短路语义,即某个参数为假时,后续参数不再进行求值。
- 参数
一个或多个参数,参数类型不限。
- 返回值
全部参数为真时返回
true
,任一参数为假时返回false
。 - 示例
if and($arg_mode, eq($arg_mode, 'set_header')) { add_rsp_header('USER-DEFINED-1','path1') }
- 当请求携带mode参数且mode参数等于set_header时,设置响应头USER-DEFINED-1。
- 当请求不携带mode参数,短路语义生效,不再执行后续的eq比较;由于and()为假,不会设置响应头USER-DEFINED-1。
or
函数详细解释如下:
- 语法:
or(arg, ...)
。 - 说明
- 逻辑或运算符。
- 支持短路语义,即某个参数为真时,后续参数不再进行求值。
- 参数
一个或多个参数,参数类型不限。
- 返回值
任一参数为真时返回
true
,全部参数为假返时false
。 - 示例
if and($http_from, or(eq($http_from, 'wap'), eq($http_from, 'comos'))) { rewrite(concat('http://tech.com.cn/zt_d/we2015/', $http_from), 'enhance_redirect') }
- 当请求头from存在,且其值为[wap|comos]时,302重写向至http://tech.com.cn/zt_d/we2015/[wap|comos]。
- 当请求头from存在,且其值为wap时,短路语义生效,不再执行后续eq comos比较,同时or()返回true。
not
函数详细解释如下:
- 语法:
not(arg)
。 - 说明
逻辑运算符取反。参数
undef
和false
为假,其余为真。 - 参数
仅接受1个参数,参数类型不限。
- 返回值
- true
- false
- 示例
if not($arg_key) { exit(403) } if not($cookie_user) { exit(403, 'not cookie user') } if not(0) { exit(403) } if not(false) { exit(403) }
- 如果请求未携带参数key时,403拒绝请求。
- 当请求未携带cookie user时,403拒绝请求,响应body为'not cookie user'。
- not(0)的结果为false。
- not(false)的结果为true。
eq
函数详细解释如下:
- 语法:
eq(arg1, arg2)
。 - 说明
比较2个参数是否相等。
- 参数
- arg1:任意类型。
- arg2:应与
arg1
类型相同。
- 返回值
参数相等返回
true
,否则返回false
。 - 示例
key1 = 'value1' key2 = 'value2' if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) { say('match condition') }
- 请求参数k1和k2都存在时,执行后续的比较操作。
- 请求参数k1或k2不存在时,短路语义生效,不再执行后续的比较操作。
- eq: 请求参数k1的值是否等于value1。
- ne: 请求参数k2的值不等于value2。
- 当请求参数k1和k2均存在,且k1等于value1,k2不等于value2时,输出响应体match condition。
ne
函数详细解释如下:
- 语法:
ne(arg1, arg2)
。 - 说明
比较2个参数是否不等。
- 参数
- arg1:任意类型。
- arg2:应与
arg1
类型相同。
- 返回值
参数不等返回
true
,否则返回false
。 - 示例
key1 = 'value1' key2 = 'value2' if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) { say('match condition') }
- 请求参数k1和k2都存在时,执行后续的比较操作。
- 请求参数k1或k2不存在时,短路语义生效,不再执行后续的比较操作。
- eq: 请求参数k1的值是否等于value1。
- ne: 请求参数k2的值不等于value2。
- 当请求参数k1和k2均存在,且k1等于value1,k2不等于value2时,输出响应体match condition。