mb_ereg_replace_callback
(PHP 5 >= 5.4.1, PHP 7)
mb_ereg_replace_callback — マルチバイト文字列にコールバック関数を用いた正規表現による置換を行う
説明
mb_ereg_replace_callback
( string $pattern
, callable $callback
, string $string
[, string $option
= "msr"
] ) : string
string
から
pattern
にマッチする文字列を検索し、
一致した文字列をcallback
関数の出力で置換します。
この関数の動作はmb_ereg_replace()とほぼ同じですが、
replacement
パラメータの代わりに
callback
を指定するところが異なります。
パラメータ
pattern
正規表現パターン。
pattern
ではマルチバイト文字列を使用可能です。callback
コールバック関数で、
subject
文字列で一致した要素を配列で 指定してコールされます。 このコールバック関数は、置換した文字列を返す必要があります。しばしば、 mb_ereg_replace_callback()の
callback
関数が必要となるのは一度だけである 場合があります。 この場合、 mb_ereg_replace_callback()をコールする際の コールバックに 匿名関数 を使用することができます。 このようにすることで、 コールに関する全ての情報を一つの場所に集約し、 他のどこでも使用されないコールバック関数の名前を 関数の名前空間にばらまかないですみます。string
チェックされるstring。
option
検索オプション。説明は、mb_regex_set_options() を参照してください。
返り値
成功した際に string、 そうでない場合はエラー時に false
を
返します。
注意
注意:
内部エンコーディングあるいは mb_regex_encoding() で指定した文字エンコーディングを、 この関数の文字エンコーディングとして使用します。
例
例1 mb_ereg_replace_callback() の例
<?php// this text was used in 2002// we want to get this up to date for 2003$text = "April fools day is 04/01/2002\n";$text.= "Last christmas was 12/24/2001\n";// the callback functionfunction next_year($matches){ // as usual: $matches[0] is the complete match // $matches[1] the match for the first subpattern // enclosed in '(...)' and so on return $matches[1].($matches[2]+1);}echo mb_ereg_replace_callback( "(\d{2}/\d{2}/)(\d{4})", "next_year", $text);?>
上の例の出力は以下となります。
April fools day is 04/01/2003 Last christmas was 12/24/2002
例2 PHP 5.3.0以降でサポートされる匿名関数を使用したmb_ereg_replace_callback()の例
<?php// this text was used in 2002// we want to get this up to date for 2003$text = "April fools day is 04/01/2002\n";$text.= "Last christmas was 12/24/2001\n";echo mb_ereg_replace_callback( "(\d{2}/\d{2}/)(\d{4})", function ($matches) { return $matches[1].($matches[2]+1); }, $text);?>
参考
- mb_regex_encoding() - 現在のマルチバイト正規表現用のエンコーディングを取得または設定する
- mb_ereg_replace() - マルチバイト文字列に正規表現による置換を行う
- 匿名関数