PHP正则表达式 - 在出现具有部分可变内容的针之后追加一个字符串,但总是一个整数变量内容

时间:2013-07-23 15:55:08

标签: php regex

我有一个像这样的字符串

"$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

如果可以,请帮助。

2 个答案:

答案 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重置以前匹配过的所有内容。