PHPバージョン
5.2+
$haystack = 'こんにちは、PHP mb_stripos()関数の例です。';
$needle = 'php';

$position = mb_stripos($haystack, $needle, 0, 'UTF-8');

if ($position !== false) {
    echo "部分文字列が見つかった位置: $position";
} else {
    echo '部分文字列が見つかりませんでした。';
}
// 出力: 部分文字列が見つかった位置: 6

/*
 * 注意してください!
 * 文字列のインデックスは0から始まります。
 * 最初の文字のインデックスは0で、2番目の文字のインデックスは1です。
*/
$haystack = 'こんにちは、PHP mb_stripos()関数の例です。';
$needle = 'php';

$position = stripos($haystack, $needle, 0, 'UTF-8');

if ($position !== false) {
    echo "部分文字列が見つかった位置: $position";
} else {
    echo '部分文字列が見つかりませんでした。';
}

// 出力: 部分文字列が見つかった位置: 17 ← 意図しない結果が発生します。
mb_stripos(
    string $haystack,
    string $needle,
    int $offset = 0,
    ?string $encoding = null
): int|false
$newstring = 'あいうえお かきくけこ';
$pos = mb_stripos($newstring, 'あ', 0, 'UTF-8');

var_dump($pos); // int(0)
$newstring = 'あいうえお かきくけこ';
$pos = mb_stripos($newstring, 'あ', 0, 'UTF-8');

var_dump($pos); // int(0)

if ($pos === false) {
    echo "文字列内に'あ'は見つかりません。";
} else {
    echo "文字列内に'あ'が含まれています。";
}

// 出力: "文字列内に'あ'が含まれています。"
$newstring = 'あいうえお かきくけこ';
$substring = '';

$pos = mb_stripos($newstring, $substring, 0, 'UTF-8'); // Warning: mb_stripos(): Empty delimiter