関数の概要
mb_eregi は PHP のマルチバイト文字対応の正規表現関数で、大文字・小文字を区別せずにマルチバイト文字列内でパターンマッチを行います。日本語などのマルチバイト文字を含む文字列に対しても正しく検索できるため、国際化対応のアプリケーション開発に非常に便利です。
パラメータの説明
- pattern : 検索したい正規表現パターン(大文字小文字を区別しないマルチバイト対応)を指定します。スラッシュで囲む必要はありません。
- string : 検索の対象となる文字列です。マルチバイト文字を含む文字列が指定可能です。
- regs(省略可能) : マッチした部分文字列やキャプチャグループを格納する配列の変数を指定します。マッチしなければ変更されません。
- option(省略可能) : 正規表現の修飾子を指定しますが、mb_eregi はすでに大文字小文字を区別しないため、一般的には使用しません。
戻り値
検索にマッチした場合は 1 を返し、マッチしなかった場合は 0 を返します。もしエラーが起きた場合は FALSE を返します。
使用例
日本語を含む文字列での大文字・小文字無視検索
mb_regex_encoding("UTF-8");
$str = "こんにちは、世界!";
if (mb_eregi("世界", $str)) {
echo "「世界」が見つかりました。";
} else {
echo "「世界」は見つかりませんでした。";
}
この例では、「世界」というパターンが文字列内にあるかを大文字小文字を区別せずに調べています。日本語なので mb_eregi の使用がおすすめです。
キャプチャした部分を取得する例
mb_regex_encoding("UTF-8");
$str = "ユーザー名: Taro123";
if (mb_eregi("ユーザー名: ([a-z0-9]+)", $str, $matches)) {
echo "ユーザー名は " . $matches[1] . " です。";
} else {
echo "ユーザー名が見つかりません。";
}
マッチした部分の詳細な文字列を配列 $matches に格納し、取り出しています。
複数マッチの検索(繰り返し使用)
mb_regex_encoding("UTF-8");
$str = "apple APPLE Apple";
$offset = 0;
while (mb_eregi("apple", $str, $matches, $offset)) {
echo "マッチ: " . $matches[0] . " 位置: " . $offset . "n";
$offset += mb_strlen($matches[0]);
}
文字列内に複数回現れる「apple」をすべて取得する例です。mb_eregi は位置指定した検索も可能です。
関連する関数
- mb_ereg — マルチバイト文字対応の正規表現検索(大文字・小文字を区別する)
- mb_ereg_match — 文字列全体がパターンにマッチするかを判定
- mb_ereg_replace — マルチバイト文字対応の正規表現による置換
- mb_eregi_replace — 大文字小文字を区別しないマルチバイト正規表現による置換
まとめ
mb_eregi は PHP で日本語などマルチバイト文字列内で大文字・小文字を区別せずに正規表現検索を行いたい場合に最適な関数です。国際化対応したアプリケーションの文字列解析に役立ち、キャプチャした情報を取り出せるため柔軟な処理も可能です。実務で多くのマルチバイト文字を扱う際はぜひ活用しましょう。
