我尝试构建一个从 html 模板中捕获变量的小系统。
定义为@XXX@ 的变量可能(但不是必需的)具有以冒号(:) 发送的额外参数,即@XXX@:j 以json 编码发送数据。
我设法做的是创建一个 preg_match_all 来捕获变量和那些额外的参数。所以我想出了这个preg:
preg_match_all("/(@.*@(?:(j|n|x|z))?)/imU", $string,$this->localVariables,PREG_PATTERN_ORDER);
j|n|x|z 是可能的可用额外参数。
我发送给 $string 的字符串是:@geterr@ @domain@:j @jhon@:n
我从 preg_match_all 得到的结果是:
Array
(
[0] => Array
(
[0] => @geterr@
[1] => @domain@
[2] => @jhon@
)
[1] => Array
(
[0] => @geterr@
[1] => @domain@
[2] => @jhon@
)
[2] => Array
(
[0] =>
[1] =>
[2] =>
)
)
我知道(或认为我知道) ?: 用于可选子模式 iv'e 使用的修改是:i 用于不区分大小写 m 用于允许我的字符串为多行 U - 非贪婪
我不知道我做错了什么。
任何帮助将不胜感激