.Water-Sunlight
.サイトメニュー
.検索
.オンライン状況
登録ユーザ: 0
ゲスト: 16
.
<< Prev
require文とinclude文
« INDEX »
PHP 文法編
Next >>
ereg系の正規表現
作成日:2006/05/10

1J 正規表現(初級)

 PHPでは様々な正規表現の規格をサポートしており、また、正規表現だけで一冊の本が書けるくらいなので、 この章ではPHPの正規表現の初級程度の説明に止めます。PHPはPerlやRubyと異なりパターンマッチ演算子がありません。 PHPでは正規表現によるパターンマッチや置換は関数で処理します。

パターンマッチ演算子
PerlやRubyではパターンマッチ演算子(=~) やその否定形(!~)があり、正規表現は言語仕様の一部です。


1J.1 正規表現の種類

 PHPの正規表現は使用する関数により次の3種類に大別されます。

関数の種類説明
ereg系

ereg系関数は POSIX 1003.2で定義されたPOSIX拡張正規表現 (Extended Reuglar Exression : ERE)に準拠しています。 ereg系関数は、標準モジュールなので常に使用できます。

用例:
ereg("Fred","Fred is Great"); # //は不要
preg系

preg系関数では PCRE (Perl-compatible regular expressions) が使用できます。 PCREはPerlに準拠した強力な正規表現です。 Perlの経験者はこちらが使いやすいかもしれません。

用例:
preg_match("/Fred/","Fred is Great"); # Perl同様 // が必要
mb_ereg系

mb_ereg系関数にはRubyの正規表現ルーチンが使われています。 PHP5では正規表現のエンジンに鬼車が使われています。Perlとほぼ同等の機能があります。

用例:
mb_ereg("Fred","Fred is Great"); # ereg系同様 // は不要


各モジュールで使用できる関数の一覧を以下に挙げます。

関数の種類関数
ereg系
ereg()
パターンマッチを行い、一致パターンを取り出す(Case Sensitive)
ereg()は先頭マッチです。ereg系にはグローバルマッチの機能がありません。
eregi()
パターンマッチを行い、一致パターンを取り出す (Case Insensitive)
ereg_replace()
正規表現による置換(Case Sensitive)
ereg_replace() はグローバル置換です。
eregi_replace()
正規表現による置換 (Case Insensitive)
split()
デリミタ(正規表現)による文字列分解(Case Sensitive)
spliti()
デリミタ(正規表現)による文字列分解(Case Insensitive)
preg系
preg_match()
パターンマッチを行い、一致パターンを取り出す ※ereg()に対応
preg_replace()
正規表現による置換 ※ereg_replace()に対応
preg_replace()はデフォルトでグローバル置換ですが、置換対象の制限は引数でできます。
preg_split()
デリミタ(正規表現)による文字列分解 ※split()に対応
preg_match_all()
グローバルマッチを行い、一致パターンを取り出す ※Perl風g修飾子
preg_replace_callback()
コールバック関数を使った正規表現による置換 ※Perl風e修飾子
preg_grep()
配列のパターンマッチを行い、マッチした配列を返す ※Perl風grep()
preg_quote()
正規表現のメタ文字をクォートする
mb_ereg系
mb_ereg()
※ereg() に対応
mb_eregi()
※eregi() に対応
mb_ereg_replace()
※ereg_replace() に対応
mb_eregi_replace()
※eregi_replace() に対応
mb_split()
※split() に対応

preg系関数
preg系関数では、Perlと同じように i(大文字/小文字を区別しない)などのパターン修飾子が使えます。 但し、グローバルマッチを表す修飾子(g)はありません。グローバルマッチはpreg_match_all()で行います。
mb_ereg系関数
mb_ereg系 は php.ini の mbstring.func_overload ディレクティブによってオーバライド可能な関数です。 このディレクティブを有効にすると、例えば、ereg()はmb_ereg()によってオーバライドされます。 mb_ereg系 の関数はこの他にもあります。詳しくはPHPマニュアルを参照して下さい。
<< Prev
require文とinclude文
« INDEX »>
Page Top
Next >>
ereg系の正規表現

.