mb_strrpos

関数の概要

mb_strrpos は、PHPのマルチバイト文字列関数の一つで、指定した文字列の中から特定の文字や文字列が最後に現れる位置を検索します。特に日本語や中国語などのマルチバイト文字を扱う際に便利な関数です。strpos 関数がシングルバイト文字列用であるのに対し、mb_strrpos はマルチバイトに対応しているため、正確な位置を返します。

パラメータの説明

  • haystack(string): 検索対象の文字列。
  • needle(string): 探したい文字または文字列。
  • offset(int, 任意): 検索を開始する位置。省略すると文字列の末尾から検索を開始。正の値は先頭からの位置、負の値は末尾からの位置を示します。
  • encoding(string, 任意): 文字エンコーディングを指定。省略時は内部エンコーディングが使用されます。

戻り値

最後に見つかった needle の位置(0から始まる数値)を返します。needle が見つからない場合は false を返します。検索は encoding に基づいた文字単位で行われるため、不正確なバイト数ではなく、正確な文字の位置を得られます。

使用例

基本的な使い方

<?php
$str = "こんにちは世界、こんにちはPHP";
$pos = mb_strrpos($str, "にち");
echo $pos; // 結果: 9
?>

文字列「こんにちは世界、こんにちはPHP」の中で、「にち」が最後に現れる位置を検索しています。結果は9(0から始まるインデックス)で、後半の「こんにちは」の「にち」の位置です。

検索開始位置の指定

<?php
$str = "こんにちは世界、こんにちはPHP";
$pos = mb_strrpos($str, "にち", 10);
echo $pos; // 結果: false
?>

検索開始位置を10文字目以降に指定しているため、「にち」が後半に見つかるはずですが、実際は存在しません。これにより検索範囲をコントロールできます。

文字エンコーディング指定の例

<?php
$str = "Здравствуй, мир";
$pos = mb_strrpos($str, "в", 0, "UTF-8");
echo $pos; // 結果: 3
?>

ロシア語の文字列で、「в」が最後に現れる位置をUTF-8エンコーディング指定で検索しています。マルチバイト文字に対応できることがわかります。

関連する関数

  • mb_strpos: 文字列の最初の位置を検索する関数
  • mb_strstr: 文字列内で指定した文字以降の部分文字列を取得する関数
  • mb_substr: マルチバイト文字列の一部を抜き出す関数
  • strpos: シングルバイト文字列の位置検索(マルチバイト非対応)

まとめ

mb_strrpos はマルチバイト文字列の中で最後に特定の文字や文字列が現れる位置を取得するための強力な関数です。日本語をはじめ、多くのマルチバイト文字の正確な検索を可能にし、文字エンコーディングを指定して柔軟に利用できます。実務で文字列操作を行う際には、単純なバイト位置ではなく文字単位での位置を扱う重要なツールとして覚えておくと便利です。