我有字符串:{$value.level-1.level-2.level-3 ... level-n}
,我需要将其更改为{$value['level-1']['level-2']['level-3'] ... ['level-n']}
。
我现在该怎么做只为一个:
preg_replace('(\{\$(.*?)\.(.*?)\})', '{$$1[\'$2\']}', $string);
但我怎么能在所有级别重复它?
答案 0 :(得分:1)
试试这个:
preg_replace('#\.([a-zA-Z0-9_-]+)#', '[\'$1\']', $string)
答案 1 :(得分:0)
你不需要正则表达式。对于你想要做的事情,它不必要地复杂,难以阅读和难以维护。只需使用str_replace
代替:
$leadinString = '$value'; // or '$test' or 'foobar' or whatever
$str = '{$value.level-1.level-2.level-3 ... level-n}';
echo str_replace(array("$leadinString.", '}', '.'), array($leadinString . "['", "']", "']['"), $str);
注意:我根据你的评论对此进行了编辑。