【PHP】OR条件の正規表現の可読性を高くする例|implode関数

PHPで正規表現を使い複数の文字列を検索する際にはOR条件を使用しますが、検索する文字列が多くあると、正規表現の可読性が低くなってしまいます。

今回は、そのようなOR条件の正規表現を、implode関数を使い見やすく作成する例となります。

implode関数を使いOR条件の正規表現の可読性を高くする例

例えば、正規表現で複数の文字列を検索する場合、検索する文字列を'|'(パイプ)で区切り、以下のような正規表現とします。

/iPhone|iPod|Android.*Mobile|Windows.*Phone|blackberry9500|blackberry9530|blackberry9520|blackberry9550|blackberry9800|webOS/i

上記例は、ブラウザのユーザーエージェントから、スマホの場合のユーザーエージェントを検索する場合に使用される正規表現ですが、検索する文字列が多いため可読性が低いです。

そのため、正規表現で検索する文字列が多い場合には、以下のようにimplode関数を使い正規表現を作成すると可読性が高くなります。

// 正規表現で検索する文字列を配列で指定
$useragents = array(
	'iPhone', // iPhone
	'iPod', // iPod touch
	'Android.*Mobile', // Android スマホ
	'Windows.*Phone', // Windows Phone
	'blackberry9500', // Storm
	'blackberry9530', // Storm
	'blackberry9520', // Storm v2
	'blackberry9550', // Storm v2
	'blackberry9800', // Torch
	'webOS' // Palm Pre Experimental
);
$pattern = '/' . implode( '|', $useragents ) . '/i';

implode関数について

implode関数は、第2引数に指定した配列の要素を、第1引数に指定した文字列で区切り、1つの文字列として返します。

例のようにimplode関数を使い、複数の文字列を検索する正規表現を作成するには、検索する文字列を第2引数に配列で指定し、第1引数に区切り文字列として'|'を指定します。

それにより、正規表現で検索する文字列を、配列の要素で指定できるため可読性が高くなります。

参照サイト・書籍

コメントまたはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。Twitterで返信する場合はコチラから。