1

考虑以下代码:

 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

这只是一个例子。请大体回答。

4

2 回答 2

0

尝试这个

$new=preg_replace(array('#(\w) (.*) (\w)#','#(.*?) #'),array('{\1}<\2>{\3}','\1><'),$string);

例如,如果您的字符串首先是'a b b b c'具有第一个模式#(\w) (.*) (\w)#和第一个替换'{\1}<\2>{\3}'过程的 preg_replace,则结果是 {a}<b b b>{c}下一个具有第二个模式的 preg_replace'#(.*?) #'和第二个替换'\1><'过程 {a}<b b b>{c}在此过程中替换空间的字符串><现在 $new 结果是{a}<b><b><b>{c}

于 2013-03-28T17:53:07.897 回答
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}

现场演示:http: //ideone.com/gxa3pg

于 2013-03-29T12:42:52.513 回答