PHP:正規表現
Perl 互換の正規表現について説明します。
Perl をご存知の方は、そのまま使えます。
正規表現を使用すれば、
「英小文字が5文字と数字が3文字続く」文字列を探す、
とか簡単にできます。
正規表現のパターンは、マニュアルで。
・preg_grep(パターン, 配列 [, フラグ])
配列の中から、パターンにマッチする要素だけ配列にして返します。
フラグに PREG_GREP_INVERT を指定すると、マッチしないものだけを返します。
$a = array('abc', 'ABc', 'abcDe');
$b = preg_grep("/[a-z]3+/", $a); // 英小文字3文字を含む
var_export($b);
echo '<br>';
$b = preg_grep("/^.3$/", $a); // 任意の3文字
var_export($b);
echo '<br>';
・preg_match(パターン, 文字列 [, $matches [, フラグ [, オフセット]]])
文字列がパターンに合致した回数を返します。
つまり、0 か 1 を返します。
$matches を指定すれば、一致した情報が格納されます。
$matches[0] パターン全体で一致した文字列が、
$matches[1] 以降は、サブパターンにマッチした文字列が格納されます。
フラグに PREG_OFFSET_CAPTURE を指定すると、
$matches の各要素が、更に配列になり、
$matches[][0] には、マッチした文字列が、
$matches[][1] には、文字列全体に対するオフセット値が格納されます。
オフセットを指定すると、オフセット文字目から検索を開始します。
preg_match("/([a-z]3)([0-9]2)/", 'abc123', $matches); // array('abc12', 'abc', '12')
var_export($matches);