【PHP8.x】mb_stripos関数の使い方

作成日: 更新日:

mb_stripos関数は、指定された文字列の中から、ある部分文字列が最初に現れる位置を、大文字・小文字を区別せずに検索する関数です。この関数名の「mb」は「マルチバイト」を意味し、日本語のような複数のバイトで構成される文字を正しく処理できる点が特徴です。通常のstripos関数では、マルチバイト文字を含む文字列の検索において、予期せぬ結果や文字化けが発生する可能性がありますが、mb_stripos関数は文字エンコーディングを考慮して正確な検索結果を提供します。

主に、検索対象の文字列、検索したい部分文字列、そしてオプションとして検索を開始する位置(オフセット)を引数として受け取ります。例えば、「こんにちは世界」という文字列の中から「世界」という単語がどこにあるかを大文字・小文字を区別せずに調べたい場合に利用します。

検索対象の文字列内で部分文字列が見つかった場合、その部分文字列が最初に現れる文字位置を、0から始まるインデックスとして整数で返します。もし部分文字列が見つからなかった場合は、falseを返します。したがって、文字列の先頭で見つかった場合は0が返され、何も見つからない場合はfalseが返されるため、これらの戻り値を適切に区別して処理することが重要です。

この関数は、Webアプリケーションでユーザーからの入力文字列を処理したり、ファイルから読み込んだテキストデータの中から特定のキーワードを探したりするなど、多様な文字エンコーディングに対応した文字列操作を行う際に非常に役立ちます。特に、国際化されたアプリケーションを開発する際に、文字列の検索を安全かつ正確に行うための基本的なツールとして利用されます。

基本的な使い方

構文(syntax)

<?php
$haystack = "こんにちは世界、これはPHPです。";
$needle = "php";
$position = mb_stripos($haystack, $needle, 0, 'UTF-8');
?>

引数(parameters)

string $haystack, string $needle, int $offset = 0, ?string $encoding = NULL

  • string $haystack: 検索対象となる文字列
  • string $needle: 検索する文字列
  • int $offset = 0: 検索を開始する位置(デフォルトは先頭)
  • ?string $encoding = NULL: 文字エンコーディング(NULLの場合は内部エンコーディング)

戻り値(return)

int|false

指定された文字列内で、部分文字列が最初に出現する位置のオフセット(バイト単位)を返します。見つからなかった場合は false を返します。

【PHP8.x】mb_stripos関数の使い方 | いっしー@Webエンジニア