模式匹配并替换字符串中的数字

Pattern Match and replace numbers in a string

我有一个如下所示的字符串

channel->0->item->0->guid->0

此字符串中的数字可以从 0 到任何数字

我想把所有->N替换成[N]

预期结果: channel[0]->item[0]->guid[0]

只需捕获数字并稍后在替换部分中反向引用它。

preg_replace('~->(\d+)~', '[]', $str);

DEMO

$str = "channel->0->item->0->guid->0";
echo preg_replace('~->(\d+)~', '[]', $str);

输出:

channel[0]->item[0]->guid[0]

更新:

进行两次替换,以便在第一次替换后删除最后一个 N

$str = "channel->0->item->0->guid->0";
$str = preg_replace('~->(\d+)(?!$)~', '[]', $str);
echo preg_replace('~->\d+$~', '', $str);

输出:

channel[0]->item[0]->guid