PHPのmb_ereg_replace_callback()関数とは?使い方とサンプルコードを徹底解説
mb_ereg_replace_callback()関数とは
PHPのmb_ereg_replace_callback()関数は、コールバック関数を利用しながら、マルチバイト文字に対応した正規表現による検索・置換を行うための関数です。対象の文字列をスキャンして指定したパターンと照合し、マッチした部分をコールバック関数の返り値で置き換えます。
この関数はmb_ereg_replace()関数とよく似ていますが、置換処理を柔軟にカスタマイズできるコールバックを使える点が大きな特徴です。PHP 5.4以降のバージョンで利用できます。
基本構文
string mb_ereg_replace_callback(string $pattern, callback $callback, string $string, string $options)
パラメータ
この関数は以下の4つのパラメータを受け取ります。
$pattern − 正規表現のパターンを指定します。パターン内にはマルチバイト文字を使用することもできます。
$callback − 検索対象の文字列からマッチした要素の配列が引数として渡されて呼び出され、置換後の文字列を返す必要があります。
$string − 検索・置換の対象となる文字列を指定します。
$options − 検索オプションを指定します。
補足 − コールバック関数が必要になるのは、多くの場合mb_ereg_replace_callback()の呼び出し一箇所だけです。そのため、無名関数(クロージャ)を使って、呼び出しの中で直接コールバックを定義する方法が推奨されます。こうすることで、呼び出しに関連するすべてのコードを一箇所にまとめられ、他では一切使わないコールバック関数名によって名前空間が汚れるのを防ぐことができます。
戻り値
mb_ereg_replace_callback()は、処理が成功した場合は置換結果の文字列を返します。エラーが発生した場合はfalseを返し、文字列が現在のエンコーディングとして不正な場合はnullを返します。
サンプルコード1:通常の関数をコールバックに使う
<?php
$result = "April Fools day is 04/01/2019\n";
$result .= "Next match is 12/24/2021\n";
// コールバック関数
function next_year($matches)
{
return $matches[1].($matches[2]+1);
}
echo mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
"next_year",
$result);
?>
出力結果
April Fools day is 04/01/2020 Next match is 12/24/2022
この例では、日付の年部分(\d{4})にマッチした数値に1を加算することで、文字列内の各日付の年を翌年に更新しています。
サンプルコード2:無名関数を使う場合
次に、無名関数を使った書き方を見てみましょう。
<?php
// 無名関数を使用
$result = "April Fools day is 04/01/2019\n";
$result .= "Next match is 12/24/2021\n";
echo mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
function ($matches) {
return $matches[1].($matches[2]+1);
},
$result);
?>
出力結果
April Fools day is 04/01/2020 Next match is 12/24/2022
補足 − サンプルコード2では無名関数を採用しているため、独立したコールバック関数の定義は不要になっていますが、出力結果はサンプルコード1とまったく同じです。用途が一箇所だけのコールバックであれば、無名関数を使うことでコード全体がすっきりし、保守性も向上します。
-
PHPのlog10()関数とは?常用対数の計算方法と具体例をわかりやすく解説
定義と使用方法log10() 関数は、数値の常用対数(底が10の対数)を計算するための関数です。常用対数は「10を底とする対数」とも呼ばれ、log10x を求める際に使用されます。自然対数との間には、次のような関係式が成り立ちます。log10x = logex / loge10この式に基づけば、たとえば次のように計算できます。log10100 = loge100 / loge10 = 2PHPでは、この常用対数の計算を log10() 関数が担っています。構文log10 ( float $arg ) : floatパラメータ番号パラメータと説明1arg常用対数(底10の対数)を計算したい数値を
-
PHPのarray_filter()関数とは?使い方とサンプルコードを徹底解説
PHPのarray_filter()関数は、ユーザーが定義したコールバック関数を使って配列の要素を絞り込む(フィルタリングする)ための関数です。コールバック関数がtrueを返した要素だけが残り、フィルタリング済みの新しい配列として返されます。基本構文array_filter(arr, callback, flag)パラメータarr ー フィルタリングの対象となる配列を指定します。callback ー 各要素の判定に使用するコールバック関数を指定します。この関数がtrueを返す要素のみが結果の配列に残ります。flag ー コールバック関数に渡す引数の種類を指定するオプションです。以下の定数が利用