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

时间:2015-03-07 12:20:02

标签: php regex preg-replace

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

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

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

我想将所有 - > N 替换为 [N]

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

1 个答案:

答案 0 :(得分:1)

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

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

DEMO

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

输出:

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

<强>更新

按顺序进行双重替换,以便在第一次替换后删除最后一个N

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

输出:

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