4

正規表現がキャプチャ/一致するものを大文字にする必要があります。ハイフンの後の最初の文字を大文字にしたいとします。私の正規表現は次のようになります。

-(.)

そして、私の置換文字列は次のようになります。

-\U1

で、私はこのpreg_replaceようなものを持っているでしょう:

$string = preg_replace('/-(.)/', '-\1', $string);

しかし、これは機能しませんpreg_replace(そして、後方参照で大文字と小文字を変更することはサポートされていないと思います)。提案?

4

2 に答える 2

4

次のようにpreg_replace_callbackを使用できます。

  $string = preg_replace_callback(
           '#(?<=-)(.)#',
           create_function(
               '$matches',
               'return strtoupper($matches[1]);'
           ),
           $string
       );

または、無名関数を使用する場合(PHP ver> = 5.3.0を使用):

$string = preg_replace_callback( '#(?<=-)(.)#', function( $matches) {
    return strtoupper( $matches[1]);
}, $string);

ライブデモ: http: //ideone.com/IpoCvB

于 2013-03-26T19:32:35.867 に答える
0

$string = preg_replace('/(?<=-)(.)/e', 'strtoupper("$1")', $string);

e修飾子

于 2013-03-26T19:33:12.603 に答える