【PHP8.x】mb_strripos関数の使い方
mb_strripos関数は、マルチバイト文字列に対応し、ある文字列の中で指定した部分文字列が最後に出現する位置を、大文字と小文字を区別せずに検索する関数です。PHPが標準で提供する文字列操作関数の中には、日本語のような2バイト以上の文字で構成されるマルチバイト文字列を正しく扱えないものがありますが、この関数は、そうしたマルチバイト文字を含む文字列を安全かつ正確に処理するために設計されています。
この関数は、与えられた検索対象文字列の中から、指定した部分文字列がどこにあるかを調べます。特に、複数回出現する可能性がある部分文字列に対して、その一番最後に出現する場所を知りたい場合に有用です。検索は文字列の末尾から逆方向に進みますが、戻り値は文字列の先頭から数えた0始まりの文字位置で示されます。
主な使い方としては、検索したい元の文字列と、見つけたい部分文字列を引数として渡します。さらに、オプションとして、検索を開始する文字位置(オフセット)や、使用する文字エンコーディングを指定することも可能です。エンコーディングが明示的に指定されない場合、PHPの内部エンコーディングが自動的に適用されます。
部分文字列が見つかった場合、その開始位置を示す整数値が返されます。例えば、文字列の先頭で部分文字列が見つかった場合は0
が返されます。もし、指定した部分文字列が検索対象の文字列内に全く見つからなかった場合は、false
が返されます。このため、戻り値が0
であることとfalse
であることには明確な違いがあり、結果を正確に判定するためには、厳密な比較演算子(===
)を用いてfalse
と比較することが推奨されます。mb_strripos
関数は、国際化されたアプリケーションにおいて、文字列の検索処理を堅牢に行うための重要なツールとなります。
基本的な使い方
構文(syntax)
<?php
$haystack_string = "これはマルチバイトのテスト文字列です。テスト";
$needle_string = "テスト";
$offset_integer = 0;
$encoding_string_or_null = "UTF-8";
$found_position_integer_or_false = mb_strripos(
$haystack_string,
$needle_string,
$offset_integer,
$encoding_string_or_null
);
引数(parameters)
string $haystack, string $needle, int $offset = 0, ?string $encoding = null
- string $haystack: 検索対象の文字列
- string $needle: 検索する文字列
- int $offset = 0: 検索を開始する位置(オプション、デフォルトは文字列の末尾から)
- ?string $encoding = null: 文字エンコーディングを指定する(オプション、デフォルトは内部エンコーディング)
戻り値(return)
int|false
指定された部分文字列が、指定された文字列内で大文字・小文字を区別せずに最初に見つかった位置(インデックス)を整数で返します。見つからなかった場合は false を返します。