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

作成日: 更新日:

mb_strrichr関数は、指定した文字列の中から、別の文字列が最後に出現する場所を探し、その位置から文字列の残りの部分を抽出して返す関数です。この関数はmb_という接頭辞が示す通り、日本語や中国語のようなマルチバイト文字を含む文字列を正しく処理できるため、文字化けを心配することなく安全に利用できます。

例えば、"apple/banana/cherry.txt"という文字列から最後の/以降の部分(cherry.txt)を取得したい場合や、"filename.tar.gz"から最後の.以降の拡張子(gz)を取得したい場合などに活用できます。

主な引数は二つです。一つ目は検索対象となる文字列(haystack)で、二つ目は検索したい文字または部分文字列(needle)です。オプションとして、before_needleという引数も用意されています。この引数にtrueを指定すると、needleが見つかった位置より前の部分を返すように動作を変更できます。

もし、検索対象の文字列中にneedleが見つからない場合は、この関数はfalseを返します。この挙動を利用して、文字列が見つからなかった場合の処理を記述することができます。

ファイルパスから拡張子を取り除く、URLから最後のパスセグメントを取得する、ログファイルから特定の区切り文字以降の情報を抽出するなど、様々な文字列操作において、末尾から特定のパターンを検索して文字列を分割したい場合に、mb_strrichr関数は非常に強力なツールとなります。マルチバイト文字列を扱うシステム開発において、文字列の正確な処理を保証するために重要な関数の一つです。

基本的な使い方

構文(syntax)

<?php
$haystack_string = "これはマルチバイト文字列の例です。PHPは多くの人々に使われているプログラミング言語です。";
$needle_string = "プログラミング";
$result = mb_strrichr($haystack_string, $needle_string);

引数(parameters)

string $haystack, string $needle, bool $before_needle = false, ?string $encoding = null

  • string $haystack: 検索対象の文字列
  • string $needle: 検索する文字列
  • bool $before_needle = false: trueの場合、見つかった $needle の直前までを返す
  • ?string $encoding = null: 文字エンコーディングを指定する。省略すると内部エンコーディングが使用される

戻り値(return)

string|false

指定された文字列の末尾から、指定された文字に最初に一致する位置から文字列の末尾までを返します。指定された文字が見つからない場合はfalseを返します。

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