PHP 正規表現関数 リファレンス
PHP正規表現関数について
正規表現を使用すると、文字列内のパターンを検索して置換することができます。
インストール
PHPの正規表現関数はPHPにデフォルトで組み込まれています。したがってこれらの関数を使用するためにはインストールは不要です。
ランタイム構成
php.iniの設定を使用して、正規表現の評価時に使用される時間やリソースの量を制限することができます。
| 名前 | デフォルト値 | 説明 | 変更可能 |
|---|---|---|---|
| pcre.backtrack_limit | “1000000” | 正規表現エンジンが式を評価する際に許可されるバックトラックの最大数 | PHP_INI_ALL |
| pcre.recursion_limit | “100000” | 正規表現エンジンが式を評価する際に許可される再帰の最大深度 | PHP_INI_ALL |
| pcre.jit | “1” | 「1」に設定するとPCRE(Perl互換正規表現)のジャストインタイムコンパイルが有効になります | PHP_INI_ALL |
PHP正規表現関数
| 関数 | 説明 |
|---|---|
| preg_filter() | パターンにマッチする部分を指定された文字列や配列で置換し、マッチが見つかった場合のみ返します |
| preg_grep() | パターンにマッチした入力配列の要素のみからなる配列を返します |
| preg_last_error() | 直近の正規表現関数の呼び出しで失敗した理由を示すエラーコードを返します |
| preg_match() | 文字列内のパターンの最初の一致を見つけます |
| preg_match_all() | 文字列内のパターンのすべての一致を見つけます |
| preg_replace() | 文字列内でパターン(またはパターンの配列)にマッチした部分を指定した部分文字列(または部分文字列の配列)で置き換えた文字列を返します |
| preg_replace_callback() | 式とコールバックを指定して、式のすべての一致をコールバックによって返された部分文字列で置換した文字列を返します |
| preg_replace_callback_array() | 式とコールバックの配列を指定して、各式のすべての一致をコールバックによって返された部分文字列で置換した文字列を返します |
| preg_split() | 正規表現のマッチを区切り文字として使用して文字列を配列に分割します |
| preg_quote() | 正規表現内で特別な意味を持つ文字をバックスラッシュでエスケープします |
正規表現の修飾子
修飾子は検索の方法を変更します。
| 修飾子 | 説明 |
|---|---|
| i | 大文字小文字を区別せずに検索します |
| m | 複数行検索を行います(文字列の先頭や末尾を行の先頭や末尾としてマッチさせます) |
| u | UTF-8エンコードされたパターンの正しい一致を有効にします |
正規表現パターン
角括弧は文字の範囲を検索するために使用されます:
| 式 | 説明 |
|---|---|
| [abc] | 角括弧内のオプションから1つの文字を検索します |
| [^abc] | 角括弧内に含まれない任意の文字を検索します |
| [0-9] | 0から9の範囲の1文字を検索します |
メタキャラクタ
メタキャラクタは特別な意味を持つ文字です:
| メタキャラクタ | 説明 |
|---|---|
| | | 「|」で区切られたパターンのいずれかに一致するものを検索します(例: cat|dog|fish) |
| . | 任意の1文字に一致します |
| ^ | 文字列の先頭に一致します(例: ^Hello) |
| $ | 文字列の末尾に一致します(例: World$) |
| \d | 数字に一致します |
| \s | 空白文字に一致します |
| \b | 単語の先頭(\bWORD)や末尾(WORD\b)に一致します |
| \uxxxx | 16進数のxxxxで指定されたUnicode文字に一致します |
量指定子
量指定子は数量を定義します:
| 量指定子 | 説明 |
|---|---|
| n+ | 少なくとも1回以上のnを含む文字列に一致します |
| n* | 0回以上のnを含む文字列に一致します |
| n? | 0回または1回のnを含む文字列に一致します |
| n{x} | X個のnが連続する文字列に一致します |
| n{x,y} | XからY回のnが連続する文字列に一致します |
| n{x,} | 少なくともX回のnが連続する文字列に一致します |
Note: 特殊文字を検索する場合はバックスラッシュ(\)を使用してエスケープする必要があります。例えば、1つ以上の疑問符を検索する場合は次のようにします: $pattern = ‘/\?+/’;