seri::diary

日常

PHPで正規表現にマッチした文字列を全て取得するにはpreg_match_allを使う

つまらないことでハマって15分ほど時間を無駄にしたのでメモ。


PHP正規表現で、最初にマッチした文字列だけでなく、
探索対象の文字列内でマッチした文字列全パターンを取得するにはpreg_match_allを使用する

preg_mach_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
 *)
 */