首页 新闻 会员 周边

求大神帮助,关于正则表达式的

0
悬赏园豆:100 [待解决问题]
    $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] ,没有取到值,在这个问题上卡主了,跪求指点。。

无忧主机的主页 无忧主机 | 初学一级 | 园豆:102
提问于:2013-05-26 10:40
< >
分享
所有回答(2)
0

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);

Yu | 园豆:12980 (专家六级) | 2013-05-26 11:29

用 C/C++ 可以实现吗,求教。。

支持(0) 反对(0) 无忧主机 | 园豆:102 (初学一级) | 2013-05-26 11:53

@无忧主机: 不是很熟 帮不到你了

你可以参考一下思路

支持(0) 反对(0) Yu | 园豆:12980 (专家六级) | 2013-05-26 11:57
0
$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

忽如远行客 | 园豆:202 (菜鸟二级) | 2013-05-28 10:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册