【PHP8.x】mb_strrchr関数の使い方
mb_strrchr関数は、マルチバイト文字列の中から、指定された部分文字列が最後に現れる位置を検索し、その位置から元の文字列の末尾までを抽出して返す関数です。マルチバイト文字列とは、日本語や中国語などのように、1文字を表現するために複数のバイトを必要とする文字のことです。この関数は、通常のstrrchr
関数では正しく処理できないこのようなマルチバイト文字を含む文字列を扱う際に特に重要で、文字化けや意図しない文字列の分割を防ぎ、プログラムの信頼性を高めます。
この関数は主に以下の引数を受け取ります。第一引数には検索の対象となる文字列を指定します。第二引数には、検索したい部分文字列を指定します。第三引数はオプションで、論理値true
を指定すると、検索された部分文字列が見つかった位置からではなく、その前までの部分を返します。デフォルトはfalse
です。第四引数もオプションで、処理に使用する文字エンコーディングを指定できます。この引数を省略した場合、PHPの内部エンコーディング設定が使用されます。
検索する部分文字列が見つかった場合、この関数は該当する部分文字列を返します。もし見つからなかった場合は、false
を返します。例えば、日本語のファイルパスから最後のスラッシュ以降のファイル名を抽出する場合や、特定の区切り文字を基準に文字列の末尾部分を取得する際に非常に役立ちます。マルチバイト文字列を正確に操作する必要がある場面で、安全かつ効率的な文字列処理を実現します。
基本的な使い方
構文(syntax)
<?php
$text = "これはマルチバイトの文字列です。検索は最後から行われます。";
$search_char = "字";
$result = mb_strrchr($text, $search_char);
echo $result;
?>
引数(parameters)
string $haystack, string $needle, bool $before_needle = false, ?string $encoding = null
- string $haystack: 検索対象となる文字列
- string $needle: 検索する文字列
- bool $before_needle = false: $needle の直前の文字までを返すか ($true)、$needle 以降を返すか ($false、デフォルト)
- ?string $encoding = null: 文字エンコーディングを指定します。省略すると内部エンコーディングが使用されます。
戻り値(return)
string|false
指定された文字列の末尾から検索して、指定された部分文字列が最初に出現する位置から文字列の末尾までの部分文字列を返します。見つからなかった場合は false を返します。