因为我有一个非常多余的配置文件格式。我发明了一种用于编写循环的自定义脚本格式,例如:
[Config Object]
{Loop 3
Setting[i] = Value[i]
}
OtherSetting=X
这将导致:
[Config Object]
Setting1 = Value1
Setting2 = Value2
Setting3 = Value3
OtherSetting = X
我的第一个想法是使用正则表达式,比如这个:
!{(.*?)}!is
在我尝试将它与嵌套循环一起使用之前,它的效果非常好 - 你肯定知道这个“哦,cr......时刻”
因为以下:
1: [Config Object]
2: *{*Loop 3
3: Section[i]
4: {Loop 3
5: Setting[i] = Value[i]
6: *}*
7: }
8: OtherSetting=X
将引导正则表达式覆盖第 2 行和第 6 行之间的范围(使用 *s 营销它们)
实际上我真的不知道如何解决这个问题,因为正则表达式在逻辑上是正确的。
这 ?Lazy-Operator 是必需的,因为没有它我会在另一个方向上遇到同样的问题,并且无法编写两个后续循环。
一点点研究让我清楚,正则表达式在这里不是正确的方向,但我找不到任何 PHP 解决方案。那么我如何才能在 PHP 中高效地解析我的“循环”脚本,例如获取一个带有循环的数组并用计算结果替换大括号内的命令呢?