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

PHPのmb_strrichr()関数とは?大文字小文字を区別せずに最後の出現位置を検索する方法

PHPのmb_strrichr()関数は、指定した文字列(haystack)の中で、検索対象の文字列(needle)が最後に現れる位置を見つけ、その位置以降(または以前)の部分文字列を返すマルチバイト対応の関数です。

この関数の大きな特徴は、大文字と小文字を区別しないという点です。類似の関数であるmb_strrchr()は大文字・小文字を区別して検索しますが、mb_strrichr()では「RL」と「rl」などを同じものとして扱います。検索結果が見つからなかった場合はfalseを返します。

構文

string mb_strrichr(
   $str_haystack,
   $str_needle,
   $bool_before_needle = false,
   $str_encoding
)

パラメータ

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

  • str_haystack − 検索対象となる元の文字列です。ここからneedleが最後に現れる位置を探します。

  • str_needle − haystackの中で検索したい文字列です。

  • before_needle − 返される部分文字列の範囲を決めるためのパラメータです。

    • true を設定した場合:文字列の先頭から、needleが最後に現れる位置の直前までの部分を返します。

    • false を設定した場合:needleが最後に現れる位置から、文字列の末尾までの部分を返します。

  • str_encoding − 使用する文字エンコーディング名を指定します。省略した場合は、内部エンコーディングが使用されます。日本語などのマルチバイト文字を扱う場合は「UTF-8」などを明示的に指定することを推奨します。

戻り値

haystack文字列から抽出された指定部分の文字列を返します。needleがhaystack内に見つからなかった場合はfalseを返します。

使用例1:before_needleにfalseを指定した場合

<?php
   // 文字エンコーディング:UTF-8を使用
   // 対象文字列:"Hello World"
   // 検索文字列:"rl"
   // before_needle:false を指定
   $string = mb_strrichr("HelloWorld", "rl", false, "UTF-8");

   // 出力結果は string(3) "rld" になります
   var_dump($string);
?>

出力結果

string(3) "rld"

この例では、「rl」が最後に現れるのは「World」の「rl」の部分なので、そこから末尾までの「rld」が返されています。

使用例2:before_needleにtrueを指定した場合

<?php
   // 文字エンコーディング:UTF-8を使用
   // 対象文字列:"Hello World"
   // 検索文字列:"rl"
   // before_needle:true を指定
   $string = mb_strrichr("Hello World", "rl", true, "UTF-8");

   // 出力結果は string(8) "Hello Wo" になります
   var_dump($string);
?>

出力結果

string(8) "Hello Wo"

before_needleがtrueの場合は、文字列の先頭からneedleの直前までの「Hello Wo」が返されます。

使用例3:needleが見つからない場合

<?php
   // 文字エンコーディング:UTF-8を使用
   // 対象文字列:"Hello World"
   // 検索文字列 "ef" はhaystack内に存在しないため、
   // false が返されます
   $string = mb_strrichr("Hello World", "ef", true, "UTF-8");

   // 出力結果は false になります
   var_dump($string);
?>

出力結果

bool(false)

検索文字列「ef」は対象の文字列内に存在しないため、戻り値としてfalseが返されます。

まとめ

mb_strrichr()関数は、マルチバイト文字列に対応しながら、大文字小文字を区別せずに最後の出現位置を検索できる便利な関数です。ファイルの拡張子を取得したり、URLの一部を抽出したりする際などに活用できます。大文字小文字を区別したい場合はmb_strrchr()を使い分けるとよいでしょう。

  1. PHPのquoted_printable_encode()関数の使い方を徹底解説

    PHPのquoted_printable_encode()関数は、8ビット文字列をquoted-printable形式の文字列に変換するための組み込み関数です。quoted-printableはMIME(Multipurpose Internet Mail Extensions)で定義されているエンコード方式の一つで、主に電子メールで非ASCII文字(日本語など)を安全に送信する際に利用されます。構文quoted_printable_encode(str)パラメータstr − 変換対象となる8ビット文字列を指定します。この引数は必須です。戻り値quoted_printable_encode()

  2. 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