$str = "fsafsaf<{0}>54a<{1}>u7ygda<{2}>kklaoda<{3}>"; $char = array('a1','a2','a3','a4'); $pattern = '/<\{(\d*)\}>/'; $replacement = '$char[\\1]'; $newstr = preg_replace($pattern,$replacement,$str); echo $newstr;
我想把$str 里面的<{0}><{1}><{2}><{3}>依次替换为 $char数组对应下标的值,可按我上面的代码来做替换之后输出了 fsafsaf$char[0]54a$char[1]u7ygda$char[2]kklaoda$char[3] ,没有取到值,在这个问题上卡主了,跪求指点。。
FYI
在js是这样的
var chars=new Array(10,11,12,13);
var str = "fsafsaf<{0}>54a<{1}>u7ygda<{2}>kklaoda<{3}>";
var pattern = /<{(\d*)}>/g;
var newstr = str.replace(pattern ,function(matchvalue){var index=matchvalue.replace(/\D/g,''); return chars[index];});
alert(newstr);
用 C/C++ 可以实现吗,求教。。
@无忧主机: 不是很熟 帮不到你了
你可以参考一下思路
$str = "fsafsaf<{0}>54a<{1}>u7ygda<{2}>kklaoda<{3}>"; $char = array('a1','a2','a3','a4'); $pattern = '/<\{(\d*)\}>/e'; $replacement = '$char[\\1]'; $newstr = preg_replace($pattern,$replacement,$str); echo $newstr;
第三行的正则后面加多一个e