Posix拡張正規表現

Posix拡張正規表現の利用

PHPでは、Posix拡張正規表現を利用することができます。 Posixとは、Portable Operating System Interface for UNIX の略で、 Linux を始めとする Unix 互換OSが満たすべき仕様を定めたものです。 Perl互換正規表現よりも機能は限定されていますが、汎用性は高いです。 Posix拡張正規表現を利用した関数は、関数名が ereg で始まります。

正規表現を利用した検索

正規表現を利用した検索には、eregを利用します。 大文字小文字を区別しない場合は、eregiを利用します。 引数は、検索パターン、検索対象とする文字列、の順になります。 なお、検索パターンは、「/」で囲みません。 検索パターンにマッチした場合はtrueを返し、 マッチしなかった場合はfalse を返します。

  $yuubin = "[0-9]{3}-[0-9]{4}";
  $address = "650-0033 神戸市中央区江戸町95 井門神戸ビル 1F シティバンク神戸支
店";
  ereg($yuubin,$address);

第三の引数(オプション引数)に変数を指定すると、 マッチした文字列が、 パターン全体にマッチした文字列、サブパターンにマッチした文字列、 の順に配列として格納されます。

  $yuubin = "([0-9]{3})-([0-9]{4})";
  $address = "650-0033 神戸市中央区江戸町95 井門神戸ビル 1F シティバンク神戸支
店";
  ereg($yuubin,$address,$result);
  print_r($result);

上のスクリプトを実行した結果は、

Array ( [0] => 650-0033 [1] => 650 [2] => 0033 )

のようになります。配列の先頭はパターン全体になり、 後はサブパターン(検索するパターンで括弧()で括った部分) にマッチした文字列が順に格納されています。

正規表現を利用した置換

正規表現を利用した置換には、ereg_replace を利用します。 大文字小文字を区別しない場合は、eregi_replace を利用します。 引数は、検索パターン、置換文字(列)、置換を行う文字列、の順になります。 この関数は、置換を行った結果を返します。 例えば、下のように利用します。

  $replacedtext = ereg_replace("(<br>)+","\\1",$text);
  print($replacedtext);

この例では、改行(<br>)が複数出てきた場合、 1つだけにします。 \\1は(一般には「バックスラッシュ2個+数字」)、 正規表現のサブパターン(括弧で括られた部分)を順に参照します。 数字が0ではなく1からはじまることに注意しましょう。 ちなみに \\0 は元の文字列に対応します。

※PHP5.3以降では、ereg系は deprecated (将来廃止予定) エラーになります。preg系の利用を推奨します。

Copyright (C) 2003-2013. PHP で WEB 作成 All rights reserved.