関数の概要
strpos は、PHPで文字列の中から指定した部分文字列の最初の位置を検索する関数です。文字列操作の基本的な関数の一つで、対象の文字列に部分文字列が含まれているかどうか、そしてその位置を取得したいときに使用されます。
パラメータの説明
haystack(文字列):検索対象の文字列needle(文字列):検索する部分文字列offset(整数、省略可能):検索を開始する位置(0から始まるインデックス)。負の値も使用可能
戻り値
needle が haystack に存在する場合、その最初の位置(0から始まるインデックス)を整数で返します。存在しない場合は false を返します。なお、先頭にある場合は 0 を返すため、結果の判定を厳密に行うには === 演算子でチェックする必要があります。
使用例
基本的な使い方
<?php
$text = "Hello, world!";
$position = strpos($text, "world");
echo $position;
?>
この例では、文字列「Hello, world!」の中で「world」が最初に現れる位置を取得し、その位置(7)を表示します。
存在しない文字列を検索した場合
<?php
$text = "Hello, world!";
$position = strpos($text, "PHP");
if ($position === false) {
echo "見つかりませんでした";
} else {
echo "位置は " . $position . " です";
}
?>
この例では「PHP」という文字列が含まれていないため、「見つかりませんでした」と表示されます。0 と false の区別を === で行っています。
offsetパラメータの利用例
<?php
$text = "abc abc abc";
$first = strpos($text, "abc"); // 0
$second = strpos($text, "abc", 1); // 4
echo "1つ目: " . $first . ", 2つ目: " . $second;
?>
offset を指定することで、最初に見つかった位置ではなく、指定位置以降からの検索が可能になります。この例では2つ目の「abc」の位置(4)が取得できます。
関連する関数
strrpos:文字列の最後に現れる部分文字列の位置を検索stripos:大文字・小文字を区別せずに部分文字列の位置を検索substr:文字列の一部分を取り出すstrstr:部分文字列から後ろの文字列を取得
まとめ
strpos は、文字列の中から指定した部分文字列の初出位置を検索するシンプルかつ強力な関数です。検索結果が 0 の場合と false の場合を区別する必要があるため、比較には === を使いましょう。offset を使うことで、2回目以降の出現位置も取得可能です。文字列検索で非常に頻繁に使われるので、確実に理解しておくことをおすすめします。
