我有一个像这样的字符串
"$c[1]['arts_stock']['art_stock']+$aaa+$c[1234]['abcs_stock']['abc_stock']-$ccc"
是的,这是一个字符串!我需要的是在每次“$ c [ nnn ]”之后加入“[$ i]”。
在这种情况下,所需的结果是
"$c[1][$i]['arts_stock']['art_stock']+$aaa+$c[1234][$i]['abcs_stock']['abc_stock']-$ccc
如果可以,请帮助。
答案 0 :(得分:3)
看起来很简单,但你必须记住要逃避$
和[]
,因为它们在正则表达式中有意义:
$str = "\$c[1]['arts_stock']['art_stock']+\$aaa+\$c[1234]['abcs_stock']['abc_stock']-\$ccc";
$str = preg_replace('/\$c\[\d+\]/', '\0[$i]', $str);
var_dump($str);
打印:
string(86) "$c[1][$i]['arts_stock']['art_stock']+$aaa+$c[1234][$i]['abcs_stock']['abc_stock']-$ccc"
在preg_replace
来电中,\0
是对整个匹配文字的反向引用,因此我们要告知替换匹配的文字,匹配的文字加上[$i]
。< / p>
答案 1 :(得分:0)
由于Carlos的回答很有效,你可以试试这个变种:
$str = preg_replace('~\$c\[\d+]\K~', '[$i]', $str);
\K
重置以前匹配过的所有内容。