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

mb_rtrim関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

mb_rtrim関数は、指定された文字列の末尾から、特定の文字(またはデフォルトの空白文字)を取り除く処理を実行する関数です。この関数の最大の特徴は、「mb_」というプレフィックスが示す通り、マルチバイト文字列(例えば日本語の全角文字など)を正確に処理できる点にあります。PHPの標準的なrtrim()関数では、主に半角文字に特化しているため、全角スペースや特定のマルチバイト文字を文字列の末尾から正確に取り除くことが難しい場合がありますが、mb_rtrim()関数は、こうしたマルチバイト文字の取り扱いにおいて非常に優れた機能を提供します。

この関数を使用する際は、第一引数に処理したい元の文字列を指定します。第二引数には、末尾から削除したい文字のリストを文字列として指定できます。この第二引数を省略した場合、半角スペース、タブ、改行などの一般的な空白文字が自動的に削除の対象となります。また、文字列のエンコーディングが明示的に異なる場合のために、第三引数としてエンコーディングを指定することも可能です。これにより、多様な文字コードを持つ文字列に対しても、一貫した正確な処理が保証されます。

mb_rtrim()関数は、ウェブアプリケーションなどでユーザーが入力したデータの末尾に不要な空白文字が含まれている場合や、CSVファイルなどの外部データから読み込んだ文字列を整形する場合など、文字列のクリーンアップや正規化のシナリオで非常に役立ちます。この関数は、処理後の新しい文字列を返しますが、元の文字列自体は変更されないため、安心して利用できます。

構文(syntax)

1function mb_rtrim(string $string, string $characters = " \n\r\t\v\0", ?string $encoding = null): string

引数(parameters)

string $string, string $characters = " \n\r\t\v\0", ?string $encoding = null

  • string $string: 末尾の空白文字を削除したい文字列
  • string $characters = " \n\r\t\v\0": $string の末尾から削除する文字を指定する文字列。指定しない場合は、一般的な空白文字(スペース、タブ、改行など)が削除されます。
  • ?string $encoding = null: 文字エンコーディングを指定する文字列。指定しない場合は、内部エンコーディングが使用されます。

戻り値(return)

string

指定された文字列の末尾にある、指定された文字セットに一致する文字をすべて削除した新しい文字列を返します。

サンプルコード

PHP mb_rtrim で文字列末尾をトリムする

1<?php
2
3/**
4 * mb_rtrim関数の使用例。
5 * 指定された文字列の末尾から、空白文字または指定された文字を削除します。
6 * マルチバイト文字(日本語など)を正しく処理できる点が特徴です。
7 */
8
9// --- 例1: 末尾の空白文字を削除する ---
10// mb_rtrimの第2引数を省略すると、デフォルトで空白文字(スペース、タブ、改行など)が削除されます。
11$text1 = "  PHP は素晴らしい言語です!   \n\t";
12echo "--- 例1: 末尾の空白文字を削除 ---\n";
13echo "元の文字列: '" . $text1 . "' (長さ: " . mb_strlen($text1) . "文字)\n";
14$trimmedText1 = mb_rtrim($text1);
15echo "処理後の文字列: '" . $trimmedText1 . "' (長さ: " . mb_strlen($trimmedText1) . "文字)\n\n";
16
17// --- 例2: 末尾の特定の文字を削除する ---
18// 第2引数に削除したい文字を文字列として指定します。
19$text2 = "ファイル名.txt....///";
20$charactersToRemove = " ./"; // スペース、ドット、スラッシュを削除対象とします
21echo "--- 例2: 末尾の特定の文字を削除 ---\n";
22echo "元の文字列: '" . $text2 . "' (長さ: " . mb_strlen($text2) . "文字)\n";
23echo "削除する文字: '" . $charactersToRemove . "'\n";
24$trimmedText2 = mb_rtrim($text2, $charactersToRemove);
25echo "処理後の文字列: '" . $trimmedText2 . "' (長さ: " . mb_strlen($trimmedText2) . "文字)\n\n";
26
27// --- 例3: マルチバイト文字を削除する ---
28// 通常のrtrimと異なり、mb_rtrimはマルチバイト文字(日本語など)を正しく処理できます。
29$text3 = "これは日本語の文字列です。。。!?";
30$charactersToRemoveJapanese = "。!?"; // 日本語の句点や記号を削除対象とします
31echo "--- 例3: マルチバイト文字を削除 ---\n";
32echo "元の文字列: '" . $text3 . "' (長さ: " . mb_strlen($text3) . "文字)\n";
33echo "削除する文字: '" . $charactersToRemoveJapanese . "'\n";
34$trimmedText3 = mb_rtrim($text3, $charactersToRemoveJapanese);
35echo "処理後の文字列: '" . $trimmedText3 . "' (長さ: " . mb_strlen($trimmedText3) . "文字)\n";
36

mb_rtrimは、PHPで文字列の末尾から特定の文字を削除するために使用する関数です。特に、日本語のようなマルチバイト文字(1文字が複数バイトで表現される文字)を扱う際に、文字化けや誤動作を起こさずに正しく処理できる点が特徴です。

この関数は、最初の引数$stringで指定された文字列の末尾から、2番目の引数$charactersで指定された文字セットに含まれる文字を削除します。もし$charactersが省略された場合、スペース、タブ、改行などの一般的な空白文字がデフォルトで削除対象となります。削除処理後の新しい文字列が戻り値として返されます。3番目の引数$encodingは、文字列のエンコーディングを指定できますが、通常は省略してもPHPが自動的に適切なエンコーディングを判別します。

例えば、文字列の末尾にある余分なスペースや改行を削除したい場合、mb_rtrim($text)のように簡単に使用できます。また、「ファイル名.txt....///」のように末尾に特定の記号が連続している場合に、$charactersに「 ./」のように削除したい文字のセットを指定することで、それらの記号だけを削除することも可能です。日本語の文字列の末尾にある「。。!?」のような句読点や記号を削除したい場合でも、mb_rtrimは文字数を正確に数え、正しく処理を行うため、非常に信頼性が高く、Webアプリケーションなどでユーザーからの入力値を整形する際などに役立ちます。

mb_rtrim関数は、文字列の末尾から指定された文字を削除します。mb_プレフィックスが示す通り、日本語などのマルチバイト文字も正しく処理できる点が通常のrtrimとの大きな違いです。第2引数に削除したい文字を文字列として指定しますが、これは「この中にあるいずれかの文字」を末尾から連続して削除するという意味です。例えば" ./"と指定すると、末尾にスペース、ドット、スラッシュのいずれかが続く限り削除されます。元の文字列は変更されず、常に新しい文字列が返されます。異なる文字エンコーディングの文字列を扱う場合は、第3引数でエンコーディングを明示的に指定しないと意図しない結果になる可能性があるため、注意が必要です。

関連コンテンツ

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