一个正则式如何解决
$input = '1aaa';
$match = 'ccc123dddd';
//现在我想,输出ccc+$input+dddd的内容。写正则如下
echo preg_replace('/^([a-z]+)\d+([a-z]+)/','$1'.$input.'$2',$match);
//但输出的是aaadddd,究其原因是$input是以数字1开头的,和'$1'组合成$11了。。。这如何是好,要求是一条正则匹配能完成的。
$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);
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);
用{}把后向引用的数字括起来
PHP code
echo preg_replace('/^([a-z]+)\d+([a-z]+)/','${1}'.$input.'${2}',$match);
用{}把后向引用的数字括起来
+
作者: ihefe 发布时间: 2011-01-07