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'最初のパターンで最初に 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}

于 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 に答える