Может кто-нибудь, пожалуйста, помогите мне с этим ... Я не очень хорош с регулярными выражениями, и я бьюсь головой со дня!
В 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 regex ... что я делаю не так?
http://regexr.com? 30dnp
Update2 @ lorenzo: когда label1: \"value1\",label2: \"value2\"
совпадает с моей строкой, я перезаписываю ее новой строкой из {в}, как это {label1: \"value1\",label2: \"value2\",label3: \"value3\",label4: \"value4\"}
Что он делает: проверяет, соответствуют ли сохраненные значения1 и значение2 моей тестовой строке, если она положительная -> обновите все другие значения (4,5,6) моими новыми строковыми значениями.
Надеюсь, теперь стало яснее, чего я хочу достичь.