在 preg_replace() 中重复元素

Repeat elements in preg_replace()

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

我现在如何只做一个:

preg_replace('(\{$(.*?)\.(.*?)\})', '{$[\'\']}', $string); 但是我怎样才能对所有级别重复呢?

您不需要为此使用正则表达式。对于您要尝试做的事情,它不必要地复杂、难以阅读且难以维护。只需使用 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

注意:我根据您的评论进行了编辑。

试试这个:

preg_replace('#\.([a-zA-Z0-9_-]+)#', '[\'\']', $string)