请考虑以下代码:
echo preg_replace('#(\w) (\w) (\w)#','{\1}<\2>{\3}',$string);
如果$string= 'a b c';
它会产生{a}<b>{c}
。如何修改$string='a b b b c'
返回:{a}<b><b><b><b>{c}
这个怎么样:a a a b b b c c c
这只是一个例子。请回答一般。
答案 0 :(得分:0)
试试这个
$new=preg_replace(array('#(\w) (.*) (\w)#','#(.*?) #'),array('{\1}<\2>{\3}','\1><'),$string);
例如,如果你的字符串是'a b b b c'
,首先是preg_replace,第一个模式为#(\w) (.*) (\w)#
,第一个替换'{\1}<\2>{\3}'
处理结果为{a}<b b b>{c}
的字符串接下来preg_replace带有第二个模式{ {1}}和此过程中的第二个替换'#(.*?) #'
流程'\1><'
将空格替换为{a}<b b b>{c}
,现在$ new结果为><
。
答案 1 :(得分:0)
以下是适合您的代码
$str='a a a b b b c c c';
$regex = array('/\b(a)\b\s*/', '/\b(b)\b\s*/', '/\b(c)\b\s*/');
$repl = array('{\1}', '<\1>', '{\1}');
$nstr = preg_replace($regex, $repl, $str);
echo "$nstr\n";
// OUTPUT: {a}{a}{a}<b><b><b>{c}{c}{c}