(PHP 4, PHP 5)
strpos — 文字列が最初に現れる場所を見つける
文字列 haystack の中で、 needle が最初に現れた位置を数字で返します。 PHP 5 以前の strrpos() とは異なり、この関数は needle パラメータとして文字列全体をとり、 その文字列全体が検索対象となります。
検索を行う文字列。
needle が文字列でない場合は、 それを整数に変換し、その番号に対応する文字として扱います。
オプションのパラメータ offset により、 検索を開始する haystack の文字を指定することができます。 この場合でも、返される位置は haystack の先頭からの相対位置となります。
位置を表す整数値を返します。 needle が見つからない場合、 strpos() は boolean FALSE を返します。
例1 === の使用
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// === を使用していることに注目しましょう。単純に == を使ったのでは
// 期待通りに動作しません。なぜなら 'a' が 0 番目 (最初) の文字だからです。
if ($pos === false) {
echo "文字列 '$findme' は、文字列 '$mystring' の中で見つかりませんでした";
} else {
echo "文字列 '$findme' が文字列 '$mystring' の中で見つかりました";
echo " 見つかった位置は $pos です";
}
?>
例2 !== の使用
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// !== 演算子も使用可能です。ここで != を使っても期待通りに動作しません。
// なぜなら 'a' が 0 番目の文字だからです。(0 != false) を評価すると
// false になってしまいます。
if ($pos !== false) {
echo "文字列 '$findme' が文字列 '$mystring' の中で見つかりました";
echo " 見つかった位置は $pos です";
} else {
echo "文字列 '$findme' は、文字列 '$mystring' の中で見つかりませんでした";
}
?>
例3 オフセットの使用
<?php
// オフセット以前の内容を無視して文字を探すこともできます。
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos は 0 ではなく 7 となります。
?>
注意: この関数はバイナリデータに対応しています。