一个正则式如何解决

$input = '1aaa';
$match = 'ccc123dddd';
//现在我想,输出ccc+$input+dddd的内容。写正则如下
echo preg_replace('/^([a-z]+)\d+([a-z]+)/','$1'.$input.'$2',$match);
//但输出的是aaadddd,究其原因是$input是以数字1开头的,和'$1'组合成$11了。。。这如何是好,要求是一条正则匹配能完成的。

作者: pigwen521   发布时间: 2011-01-07

PHP code
echo preg_replace('/^([a-z]+)\d+([a-z]+)/','${1}'.$input.'${2}',$match);

用{}把后向引用的数字括起来

作者: lgg201   发布时间: 2011-01-07

如果你只想改变中间的数字部分,可以写简单点 

echo preg_replace('/\d+/', $input, $match);

作者: tangjianft   发布时间: 2011-01-07

引用 1 楼 lgg201 的回复:

PHP code
echo preg_replace('/^([a-z]+)\d+([a-z]+)/','${1}'.$input.'${2}',$match);

用{}把后向引用的数字括起来


+

作者: ihefe   发布时间: 2011-01-07