任何人都可以帮我解决这个问题......我对正则表达式不太擅长,而且我从几天开始就在敲我的头!
在 Smarty 中,我将这个数组 o 值包含在变量 $str 中捕获的大括号中:
{capture assign=str}{literal}
{label1: \"value1\",label2: \"value2\", label3: \"value3\",label4: \"value4\"},
{label1: \"value1b\",label2: \"value2b\", label3: \"value3b\",label4: \"value4b\"},
...
{/literal}{/capture}
如果 label1: \"value1\" 匹配我的字符串,我需要覆盖一系列标签和值(从 { 到 } )。
这是我到目前为止得到的...
{capture assign=foo_regex}{literal}/[{label1:\s*\\"{/literal}{$smarty.get.value1}{literal}\\",\s*label2:\s*\\"{/literal}{$smarty.get.value2}{literal}\\"].*[}]/g{/literal}{/capture}
{capture assign=foo_replace}{literal}{-my new string-}{/literal}{/capture}
{$str|regex_replace:$foo_regex:$foo_replace}
那里有任何向导请帮忙吗?先感谢您 !
更新:我提出了正确的表达式,但它不适用于 Smarty 正则表达式......我做错了什么? http://regexr.com?30dnp
Update2 @ lorenzo:当label1: \"value1\",label2: \"value2\"
匹配我的字符串时,我用一个从 { 到 } 的新字符串覆盖它,就像这样{label1: \"value1\",label2: \"value2\",label3: \"value3\",label4: \"value4\"}
它的作用:检查存储的 value1 和 value2 是否与我的测试字符串匹配,如果是肯定的 -> 用我的新字符串值更新所有其他值 (4,5,6)。
希望现在更清楚我想要实现的目标。