mb_ereg

関数の概要

mb_eregは、PHPのマルチバイト文字列対応の正規表現マッチング関数です。日本語などのマルチバイト文字列を含むテキストの中から、正規表現にマッチする部分を検索できます。mb_eregはmbstring拡張モジュールの一部であり、従来のereg関数のマルチバイト対応版として利用されます。

パラメータの説明

  • string $pattern — 検索に使う正規表現パターン。デリミタなしで指定します(例: “^[あ-ん]+”)。
  • string $string — 検索対象の文字列。マルチバイト文字を含んでも問題ありません。
  • array|null &$regs(省略可能)— マッチした部分文字列やグループを格納する配列への参照。当てはまる部分があれば配列に格納されます。

戻り値

マッチした場合は1(true)、マッチしなかった場合は0(false)を返します。処理に失敗するとfalseを返すので、明示的にfalseと0の違いを扱いたい場合は注意が必要です。

使用例

基本的な使い方

<?php
$pattern = '^日本語';
$string = '日本語の文章です。';

if (mb_ereg($pattern, $string)) {
    echo "マッチしました。";
} else {
    echo "マッチしませんでした。";
}
?>

この例では、文字列の先頭が「日本語」で始まるかどうかをチェックしています。結果は「マッチしました。」と表示されます。

マッチした文字列を取得する例

<?php
$pattern = '([あ-ん]+)';
$string = 'ひらがな部分を抽出します。';
if (mb_ereg($pattern, $string, $matches)) {
    echo "マッチ部分: " . $matches[1];
} else {
    echo "マッチなし";
}
?>

この例では、ひらがな文字列の連続部分を正規表現で抽出し、$matches配列に格納しています。最初にマッチした部分が表示されます。

メールアドレス形式のチェック

<?php
$pattern = '^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$';
$email = 'test@example.com';

if (mb_ereg($pattern, $email)) {
    echo "正しいメールアドレス形式です。";
} else {
    echo "形式が正しくありません。";
}
?>

メールアドレスの基本的な形式チェックにmb_eregを使う例です。マルチバイト文字があっても問題なく検証できます。

関連する関数

  • mb_ereg_match — 文字列全体がパターンにマッチするか調べる
  • mb_ereg_replace — マルチバイト対応の正規表現置換を行う
  • mb_ereg_search — マルチバイト文字列の正規表現検索開始、続行、結果取得処理を行う
  • mb_split — マルチバイト対応の正規表現による文字列分割

まとめ

mb_eregはマルチバイト文字列を含むテキストで正規表現検索を行いたい場合に便利なPHP関数です。日本語をはじめとしたマルチバイト言語への対応が強力で、正規表現のパターンはデリミタなしで書く点に注意してください。メールアドレスの検証や文字列抽出など、実務でよく使う場面も多いため、基礎を押さえておくと役立ちます。