PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのmb_strrpos()関数とは?文字列内で最後に現れる位置を取得する方法

PHPのmb_strrpos()関数は、ある文字列(haystack)の中で指定した文字列(needle)が最後に現れる位置を検索するために使用されます。この関数はstrrpos()のマルチバイトセーフ版に相当し、バイト数ではなく「文字数」を基準に位置を数える点が特徴です。日本語などのマルチバイト文字列を扱う際に安全に利用できます。needleの位置は、haystack文字列の先頭からカウントされます。

構文

int mb_strrpos(
   $str_haystack,
   $str_needle,
   $int_offset = 0,
   $str_encoding = null
)

パラメータ

mb_strrpos()関数は、以下の4つのパラメータを受け取ります。

  • $str_haystack − needle文字列が最後に存在するかどうかを調べる対象となる元の文字列です。

  • $str_needle − haystackの中から検索したい文字列を指定します。

  • $int_offset − 検索を開始する位置(文字数)を指定します。正の値を指定するとその位置以降が検索対象となり、負の値を指定した場合は文字列の末尾から指定した文字数分さかのぼった地点までが検索範囲になります。

  • $str_encoding − 文字エンコーディングを指定するパラメータです。省略した場合は、内部文字エンコーディング(mb_internal_encoding()で設定された値)が使用されます。

戻り値

mb_strrpos()は、指定されたhaystack文字列の中でneedleが最後に現れる位置を整数(int)として返します。needleが見つからなかった場合はfalseを返します。

例1:needleが見つからない場合

<?php
   // 内部文字エンコーディングをUTF-8に設定
   mb_internal_encoding("UTF-8");

   // "Hello World"という文字列を対象に"ol"を検索
   $integer = mb_strrpos("Hello World", "ol", 0);

   // 結果を出力
   var_dump($integer);
?>

出力

bool(false)

注意 − 上記のコードがfalseを返すのは、"Hello World"という文字列の中に連続した"ol"という部分文字列が存在しないためです。needleがhaystack内で一致しない場合、mb_strrpos()はfalseを返します。

例2:needleが見つかる場合

<?php
   // 内部文字エンコーディングをUTF-8に設定
   mb_internal_encoding("UTF-8");

   // "Hello World"という文字列を対象に"He"を検索
   $integer = mb_strrpos("Hello World", "He");

   // 結果を出力
   var_dump($integer);
?>

出力

int(0)

この例では、"He"は文字列の先頭(位置0)で見つかるため、戻り値はint(0)となります。位置は0から始まるため、「先頭で見つかった=0」が返される点に注意してください。

  1. PHPのquoted_printable_decode()関数とは?使い方とサンプルコードを解説

    PHPのquoted_printable_decode()関数は、quoted-printable形式でエンコードされた文字列を、8ビット文字列にデコードするために使用されます。メール本文などで使われるquoted-printableエンコーディングを元に戻したい場合に便利な関数です。 構文 quoted_printable_decode(str) パラメータ str − デコード対象となる入力文字列を指定します。 戻り値 quoted_printable_decode()関数は、デコード後の8ビットASCII文字列を返します。 使用例 以下は、quoted_printable_dec

  2. PHPのnl_langinfo()関数の使い方をわかりやすく解説

    PHPのnl_langinfo()関数は、現在のロケール(言語・地域設定)に関する情報を取得するための関数です。曜日名や月名、通貨記号、数値の書式など、ロケール固有のさまざまな情報を要素単位で取り出すことができます。通常、setlocale()でロケールを設定した後に使用します。 注意: この関数はWindows環境では動作しません。LinuxなどのUNIX系プラットフォームでのみ利用可能です。 構文 nl_langinfo(ele) パラメータ ele − 取得したい情報の要素を指定します。指定できる主な要素は以下の通りです。 時刻・カレンダー関連 ABDAY_(1-7) − 番号で指