つまらないことでハマって15分ほど時間を無駄にしたのでメモ。
PHPの正規表現で、最初にマッチした文字列だけでなく、
探索対象の文字列内でマッチした文字列全パターンを取得するにはpreg_match_allを使用する
間違ってpreg_machを使うと最初にマッチしたものしか第3引数の配列に格納されないので注意。
特に俺。
サンプル
<?php $string = '328-0062栃木県栃木市あんこ町1−4−15;020-0112岩手県盛岡市まどか町1−2−3;336-0016埼玉県さいたま市南区ほむほむ'; $pattern= '/\d{3}-\d{4}/'; preg_match_all($pattern, $string , $match); print_r($match); /* * 出力結果 * *Array *( * [0] => Array * ( * [0] => 328-0062 * [1] => 020-0112 * [2] => 336-0016 * ) * *) */
<?php $string = '328-0062栃木県栃木市あんこ町1−4−15;020-0112岩手県盛岡市まどか町1−2−3;336-0016埼玉県さいたま市南区ほむほむ'; $pattern= '/\d{3}-\d{4}/'; preg_match($pattern , $string , $match); print_r($match); /* * 出力結果 * *Array *( * [0] => 328-0062 *) */