PHP マニュアル
前のページ |  | 次のページ

# XCII. Perl互換の正規表現関数

# 導入

以下の関数で使用されるパターンに関する構文は、Perl に非常によく似て います。式は、デリミタ、例えばスラッシュ (/) で囲まれる必要があり ます。英数字またはバックスラッシュ(\)以外の全ての文字をデリミタと して使用可能です。デリミタ文字を正規表現本体において使用する必要が ある場合は、バックスラッシュでエスケープする必要があります。PHP 4.0.4以降、パターン指定用に Perl形式の (), {}, [], <> も 使用可能です。 詳細については パターン構文 を参照して下さい。

マッチングに影響を与える様々な修飾子を終端デリミタの後に付ける ことができます。 パターン修飾子 を参照下さい。

PHPは、POSIX拡張正規表現関数を用 いてPOSIX拡張構文を用いる正規表現もサポートしています。

警告
PCREのいくつかの制限についても知っておく必要があります。 詳細は、http://www.pcre.org/pcre.txt を読んで下さい。

# 要件

正規表現は、Philip Hazelで書かれ、the University of Cambridge, Englandに著作権があるオープンソースソフトウエアのPCREライブラリパッ ケージでサポートされます。PCREは、ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/で取得可能です。

# インストール手順

PHP 4.2.0以降、以下の関数はデフォルトで有効となっています。 `--without-pcre-regex`でPCRE関数を無 効にすることができます。 付属のライブラリを使用しない場合、PCREのインクルードおよびライブラリ ファイルがある場所をDIRに指定するために `--with-pcre-regex=DIR`を使用して下 さい。これ以前のバージョンでは、この関数を使用する ために`--with-pcre-regex[=DIR]`を指 定してPHPをconfigureおよびコンパイルする必要があります。

Windows版の`PHP`には この拡張モジュールのサポートが組み込まれています。これらの関数を使用 するために拡張モジュールを追加でロードする必要はありません。

# 実行用の設定

この拡張モジュールは設定ディレクティブを全く 定義しません。

# リソース型

この拡張モジュールはリソース型を全く定義し ません。

# 定義済みの定数

これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。

表 1. PREG定数

定数 | 説明
--- | ---
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()のみで使用されます。

# 例

例 1. 有効なパターンの例

- `/<\/\w+>/`

- `|(\d{3})-\d+|Sm`

- `/^(?i)php[34]/`

- `{^\s+(\s+)?$}`

例 2. 無効なパターンの例

- `/href='(.*)'` - 終端デリミタが抜けている

- `/\w+\s*\w+/J` - 未知の修飾子 'J'

- `1-\d3-\d3-\d4|` - 始端デリミタが抜けている

前のページ | ホーム | 次のページ
recode | 上に戻る | パターン修正子