次のコードを検討してください。
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
これはほんの一例です。一般的に答えてください。
次のコードを検討してください。
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
これはほんの一例です。一般的に答えてください。
これを試して
$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 2番目のパターンで、このプロセスの'#(.*?) #'
2番目の置換'\1><'
プロセス で、現在の $new 結果は.{a}<b b b>{c}
><
{a}<b><b><b>{c}
これがあなたのために働くはずのコードです
$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}