这是问题所在:给定一个字符串
"<p>The price for vehicles {capitalize(pluralize(vehicle))} is {format_number(value, language)}</p><span>{employee_name}</span><span>\{do not parse me}</span>"
我需要 (1) PHP 中的一个正则表达式模式,它匹配未转义的大括号对之间的所有值,以及 (2) 另一个匹配函数调用和嵌套函数调用的正则表达式模式(一旦匹配第一个模式)。当然,如果我只能将一个正则表达式用于这两项任务,那就太棒了。
顺便说一句,我不能使用 Smarty、Twig 或任何其他库——这是我必须自己构建解析机制的唯一原因。
万分感谢!
解决方案 (1) 第一个问题的部分解决方案可以在这里找到。基本上,我们使用正则表达式
(?={((?:[^{}]++|{(?1)})++)})并在结果数组的索引 1 处找到匹配项。
这是部分的,因为我仍然需要找到一种忽略转义大括号的方法。
(2) 正如马里奥所建议的那样,我正在考虑使用递归正则表达式。将在此处发布结果。
多谢你们!