以下の関数で使用されるパターンに関する構文は、Perl に非常によく似て います。式は、デリミタ、例えばスラッシュ (/) で囲まれる必要があり ます。英数字またはバックスラッシュ(\)以外の全ての文字をデリミタと して使用可能です。デリミタ文字を正規表現本体において使用する必要が ある場合は、バックスラッシュでエスケープする必要があります。PHP 4.0.4以降、パターン指定用に Perl形式の (), {}, [], <> も 使用可能です。
マッチングに影響を与える様々な修飾子を終端デリミタの後に付ける ことができます。 パターン修飾子 を参照下さい。
PHPは、POSIX拡張正規表現関数を用 いてPOSIX拡張構文を用いる正規表現もサポートしています。
正規表現は、Philip Hazelで書かれ、the University of Cambridge, Englandに著作権があるオープンソースソフトウエアのPCREライブラリパッ ケージでサポートされます。PCREは、ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/で取得可能です。
PHP 4.0.2以降、以下の関数はデフォルトで有効となっています。 --without-pcre-regexでPCRE関数を無 効にすることができます。これ以前のバージョンでは、この関数を使用する ために--with-pcre-regex[=DIR]を指 定してPHPをconfigureおよびコンパイルする必要があります。
Windows版のPHPにはこの拡張モジュールのサポートが組み込まれています。これらの関数を使用するために拡張モジュールを追加でロードする必要はありません。
これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。
表 1PREG定数
定数 | 説明 |
---|---|
PREG_PATTERN_ORDER | $matches[0]は、パターンマッチした部分全部を含む配列、 $matches[1]は最初の括弧付きのサブパターンにマッチした文字列の配 列、といったように結果の順序を指定します。 このフラグは、preg_match_all()でのみ使用され ます。 |
PREG_SET_ORDER | $matches[0]は最初の括弧付きのサブパターンにマッチした文字列の 配列、$matches[1]は2番目の括弧付きのサブパターンにマッチした文字 列の配列、といったように結果の順序を指定します。 このフラグは、preg_match_all()でのみ使用され ます。 |
PREG_OFFSET_CAPTURE | PREG_SPLIT_OFFSET_CAPTUREの説明を参照して下 さい。このフラグは、PHP 4.3.0以降で利用可能で す。 |
PREG_SPLIT_NO_EMPTY | このフラグは、preg_split()が空でない部分のみ を返すようにします。 |
PREG_SPLIT_DELIM_CAPTURE | このフラグは、preg_split()が デリミタパターン内の括弧付きの式もキャプチャするようにします。 このフラグは、PHP 4.0.5以降で利用可能です。 |
PREG_SPLIT_OFFSET_CAPTURE | このフラグが設定された場合、マッチする度に付随する文字列オフセッ トも返されます。これは、配列を返す返り値が、各要素がオフセット0 にマッチした文字列、その文字列オフセットがオフセット1に含まれる ような配列に変更されることになるので注意して下さい。 このフラグは、PHP 4.3.0以降で利用可能で、 preg_split()のみで使用されます。 |