関数 strpos
関数 strpos は、別の文字列内での部分文字列の最初の出現位置を返します。
部分文字列が見つからない場合は false を返します。
第1引数には検索対象の文字列を取り、
第2引数には検索する部分文字列を取ります。
デフォルトでは、関数は文字列の先頭から最初の一致まで検索します。 検索の開始位置は第3のオプション引数で調整できます。 この引数が指定された場合、検索は文字列の先頭からではなく、 指定された位置から開始されます。
また、関数 stripos もあります。
これは大文字小文字を区別しない点を除き、同じことを行います。
構文
strpos(string $haystack, string $needle, int $offset = 0): int|false
例
この例では、関数は最初の文字 'c' の位置を返します。
文字の位置は 2 です。
これはカウントが 0 から始まるためです:
<?php
echo strpos('abcde abcde', 'c');
?>
コード実行結果:
2
例
この例では第3引数が指定されているため、
検索は3番目の位置から開始されます。
この場合、関数は2番目の文字 'c' を見つけ、
その位置 8 を出力します:
<?php
echo strpos('abcde abcde', 'c', 3);
?>
コード実行結果:
8
例
部分文字列が見つからない場合、関数は false を返します。
一方、文字列が先頭にある場合、関数は 0 を返します。
これは短縮形の条件式で比較する場合に問題となる可能性があります:
<?php
if (strpos('http://site.ru', 'http://')) {
echo '+++';
} else {
echo '---';
}
?>
コード実行結果 (期待したものではありません):
'---'
例
文字列の先頭に対する正しいチェックを実行します:
<?php
if (strpos('http://site.ru', 'http://') === 0) {
echo '+++';
} else {
echo '---';
}
?>
コード実行結果:
'+++'
関連項目
-
関数
strrpos,
部分文字列の最後の出現位置を返します -
関数
str_contains,
文字列内の文字の包含をチェックします -
関数
str_starts_with,
文字列の先頭をチェックします -
関数
str_ends_with,
文字列の末尾をチェックします -
関数
array_search,
配列の検索を実行します