array_split
The `array_split` 指令将字符串变量根据指定的分隔符拆分为数组。
Array-typed variables for NGINX
·
httpserverlocationif in serverif in location
语法array_split to=$target_variable;
默认值none
上下文http, server, location, if in server, if in location
参数2+
说明
The array_split 指令在 NGINX 配置中用于将字符串分割成数组,数组元素由指定的分隔符决定。该指令对于处理来自请求参数(例如查询字符串)的值特别有用,在这些情况下多个值作为由定界符分隔的单个字符串发送。语法至少需要两个参数:用于分隔输入字符串的分隔符字符串,以及主体字符串(通常是保存输入值的变量)。此外,结果会存储在由 to 参数指定的新变量中,该变量将保存生成的数组,并可在 NGINX 的处理流程中由任何支持数组变量的指令后续使用。
在底层,array_split 指令通过将 NGINX 字符串值嵌入以管理对 C 数据类型指针的访问来工作,具体为 ngx_array_t 结构,从而使 NGINX 能更有效地处理值列表。生成的数组类型变量只能与 Array-typed variables module 提供的其他指令一起使用,因此在该上下文之外的操作必须使用 array_join 指令将数组转换回标准字符串格式,以便在数组操作范围之外的地方使用。总体而言,这个功能通过允许在服务器配置中无缝操作类似列表的结构,显著增强了 NGINX 配置的脚本能力。
配置示例
location /foo {
array_split ',' $arg_files to=$array;
array_map "name = $array_it" $array;
array_join ' or ' $array to=$sql_condition;
echo "select * from files where $sql_condition";
}⚠
to 参数必须指定一个将保存结果数组的变量;确保它遵循正确的赋值语法。
⚠
生成的数组类型变量只能在本模块的指令中使用;在其他指令中使用会导致错误。
⚠
确保分隔符准确反映输入字符串中预期的定界符,因为任何不正确的分隔符都会产生意外的数组结构。