:: reverse dictionary ::
※ソースファイルについて
Perl 互換の正規表現で文字列を分割するには、preg_split 関数を使います。
$data = "Windows,Linux, Solaris , FreeBSD"; // カンマで分割(空白もパターンに含む) $pattern = "/\s*,\s*/"; $results = preg_split($pattern, $data);
$results[0] は "Windows" 、$results[1] は "Linux" 、$results[2] は "Solaris" 、$results[3] は "FreeBSD" になります。
array preg_split(string p, string s) array preg_split(string p, string s, int n) array preg_split(string p, string s, int n, int f)
正規表現のパターン p で文字列 s を分割します。
パターン p にマッチする部分が見つかった場合、その部分の次の文字から検索を続けます。 文字列 s の最後に到達すると、マッチした部分で分割した文字列を配列にして返します。
マッチする部分が見つからなかった場合は、文字列 s を格納した配列を返します。
なお、マッチした部分が連続する場合は、分割した文字列が空の文字列( "" )になります。
$data = "Windows,, , FreeBSD"; // カンマで分割(空白もパターンに含む) $pattern = "/\s*,\s*/"; $results = preg_split($pattern, $data);
$results[0] は "Windows" 、$results[1] は "" 、$results[2] は "" 、$results[3] は "FreeBSD" になります。
n を指定した場合は、返す配列の要素数が n になるように分割します。
分割回数は、n - 1 回になります。
$data = "Windows,Linux, Solaris , FreeBSD"; // カンマで分割(空白もパターンに含む) $pattern = "/\s*,\s*/"; $results = preg_split($pattern, $data, 3);
$results[0] は "Windows" 、$results[1] は "Linux" 、$results[2] は "Solaris , FreeBSD" になります。
n に 0 または -1 を指定した場合は、文字列 s の最後まで分割を行います。
(n を省略した場合と同じ)
-2 以下を指定すると、文字列 s を格納した配列を返します。
フラグ f は、PHP 4.0.1 以降で利用可能です。
次の3つのフラグを指定できます。
PREG_SPLIT_NO_EMPTYPREG_SPLIT_DELIM_CAPTUREPREG_SPLIT_OFFSET_CAPTUREそれぞれのフラグは、戻り値の配列に影響します。
PREG_SPLIT_NO_EMPTYこのフラグを指定すると、空の文字列( "" )を含まない配列を返します。
$data = "Windows,, , FreeBSD"; // カンマで分割(空白もパターンに含む) $pattern = "/\s*,\s*/"; $results = preg_split($pattern, $data, -1, PREG_SPLIT_NO_EMPTY);
$results[0] は "Windows" 、$results[1] は "FreeBSD" になります。
PREG_SPLIT_DELIM_CAPTUREこのフラグは、PHP 4.0.5 以降で利用可能です。
このフラグを指定すると、括弧で囲まれたパターンにマッチした部分を同時に取得します。 戻り値は、分割した文字列の後にマッチした部分を格納した配列になります。
$data = "987 + 65 * 43 / 2 - 1 = 22617"; // 演算子で分割(演算子を同時に取得) $pattern = "/\s*([\+\-\*\/=]+)\s*/"; $results = preg_split($pattern, $data, -1, PREG_SPLIT_DELIM_CAPTURE);
$results[0] は "987" 、$results[1] は "+" 、
$results[2] は "65" 、$results[3] は "*" 、
$results[4] は "43" 、$results[5] は "/" 、
$results[6] は "2" 、$results[7] は "-" 、
$results[8] は "1" 、$results[9] は "=" 、
$results[10] は "22617" になります。
PREG_SPLIT_OFFSET_CAPTUREこのフラグは、PHP 4.3.0 以降で利用可能です。
このフラグを指定すると、戻り値が二次元配列になり、分割した文字列のオフセットが格納されます。
※オフセット … 先頭のインデックス
$data = "Windows,Linux, Solaris , FreeBSD"; // カンマで分割(空白もパターンに含む) $pattern = "/\s*,\s*/"; $results = preg_split($pattern, $data, -1, PREG_SPLIT_OFFSET_CAPTURE);
$results[0][0] は "Windows" 、$results[0][1] は 0 、
$results[1][0] は "Linux" 、$results[1][1] は 8 、
$results[2][0] は "Solaris" 、$results[2][1] は 15 、
$results[3][0] は "FreeBSD" 、$results[3][1] は 26 になります。
p … 正規表現のパターン
s … 分割する文字列
n … 取得する分割文字列の個数(=分割回数 + 1)
f … フラグ
・パターン p にマッチする部分が見つかった … 分割した文字列の配列
・パターン p にマッチする部分が見つからなかった … s を格納した配列
PHP3(3.0.9以降)、PHP4 、PHP5
正規表現のパターンは、Perl と同じ形式で指定できます。
Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com