PHPで文字列を検索をする:strpos, strstr, preg_match

PHPで文字列を検索する主な関数として、strpos, strstr, preg_matchがあります。今回はそれぞれの関数の使い方を紹介します。

strposの使い方

strposは検索対象の文字列に検索する文字列が何文字目に存在するかを戻り値として返します。検索した文字列が見つからなかった場合はFALSEを返します。

strpos(検索対象の文字列, 検索する文字列)

以下は「'test@domain.com'」という文字列から「'@'」を検索した例です。

<?php
print strpos('test@domain.com', '@'); // 4

結果は「4」が出力されます。0から数えられるため、"@"が5文字目にあるということが確認できます。

strstrの使い方

strstrはマッチした文字列より後ろの文字列を戻り値として返します。検索した文字列が見つからなかった場合はFALSEを返します。

strstr(検索対象の文字列, 検索する文字列)

以下は「'test@domain.com'」という文字列から「'@'」を検索した例です。

<?php
print strstr('test@domain.com', '@'); // @domain.com

また、"@"より前の部分を表示したい場合は、以下のように第3引数にTRUEを渡します。

<?php
print strstr('test@domain.com', '@', TRUE); // test

preg_match()の使い方

preg_matchは正規表現による検索を行います。

preg_match( 正規表現 , 検索対象の文字列 [,マッチした文字列の配列])

検索対象文字列から正規表現にあてはまる文字列が存在するかチェックします。戻り値はマッチした文字列がある場合は「1」、ない場合は「0」を返します。

第3引数の配列には、正規表現にマッチした文字列が格納されます。第3引数以降は省略することができます。

<?php
if ( preg_match('/[^@]+$/', 'name@example.com', $matches) ) {
  print $matches[0]; // example.com
}

実行結果は、@より後ろの文字が格納されるため、「example.com」と表示されます。


イベント