在preg_replace()中重复元素

时间:2015-01-04 01:19:45

标签: php regex replace preg-replace

我有字符串:{$value.level-1.level-2.level-3 ... level-n},我需要将其更改为{$value['level-1']['level-2']['level-3'] ... ['level-n']}

我现在该怎么做只为一个:

preg_replace('(\{\$(.*?)\.(.*?)\})', '{$$1[\'$2\']}', $string); 但我怎么能在所有级别重复它?

2 个答案:

答案 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);

Demo

注意:我根据你的评论对此进行了编辑。