Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】rtrim()関数の使い方

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

作成日: 更新日:

基本的な使い方

rtrim関数は、指定された文字列の右端(末尾)から、特定の文字または一連の空白文字を削除し、整形された新しい文字列を返す関数です。この関数は、文字列操作において、データのクリーンアップや整形を行う際に非常に有用です。例えば、ユーザーがWebフォームに入力したデータや、ファイルから読み込んだテキストデータなどに、意図せず含まれてしまう末尾のスペース、タブ、改行コードなどの不要な文字を効率的に除去することができます。これにより、データの表示や、その後の処理で発生する可能性のある問題を未然に防ぎ、データの整合性を高めることができます。

rtrim関数は、二つの引数を取ります。最初の引数には、操作対象となる元の文字列を指定します。この引数は必須であり、削除処理を行う対象となるデータです。二番目の引数(オプション)には、削除したい文字のリストを指定します。この引数を省略した場合、rtrim関数はデフォルトで、スペース(" ")、タブ("\t")、改行("\n")、キャリッジリターン("\r")、ヌルバイト("\0")、垂直タブ("\v")といった一般的な空白文字を削除の対象とします。

この関数は、指定された文字が文字列の右端から連続して現れる限り削除を続けます。たとえば、「 Hello World !!! 」という文字列に対して、空白を削除するようにrtrim関数を実行すると、「 Hello World」という結果が得られます。また、第二引数に「 /ABC」のように複数の文字を指定した場合、文字列の右端から「/」、「A」、「B」、「C」のいずれかの文字が連続して見つかる限り、それらがすべて削除されます。

rtrim関数は、元の文字列自体を変更するのではなく、加工された新しい文字列を戻り値として返します。このため、元のデータはそのままに保ちつつ、加工後の整形されたデータを利用したい場合に特に適しています。システム開発において、データの品質を維持し、表示や処理に適した形式に整えるために頻繁に利用される、基本的ながら非常に重要な文字列操作関数の一つです。

構文(syntax)

1<?php
2$string = "  Hello PHP  \n\t";
3$charactersToStrip = " \n\t";
4$result = rtrim($string, $charactersToStrip);
5?>

引数(parameters)

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

  • string $string: 末尾の空白文字を取り除く対象となる文字列
  • string $characters = " \n\r\t\v\0": 末尾から削除する文字を指定する文字列。省略時は、スペース、タブ、改行、キャリッジリターン、垂直タブ、NULL文字が対象となります

戻り値(return)

string

文字列の末尾から指定された文字を除去した結果の文字列を返します。

サンプルコード

PHP rtrimで末尾のカンマを削除する

1<?php
2declare(strict_types=1);
3
4/**
5 * rtrim() を使って文字列の末尾にあるカンマを削除するサンプル
6 *
7 * @param string $csvString 末尾にカンマを含む可能性があるCSV形式の文字列
8 * @return void
9 */
10function demonstrateRtrimWithComma(string $csvString): void
11{
12    echo '元の文字列: ' . $csvString . PHP_EOL;
13
14    // rtrim()の第2引数にカンマ(',')を指定し、文字列の末尾から削除する
15    $trimmedString = rtrim($csvString, ',');
16
17    echo 'rtrim() 適用後の文字列: ' . $trimmedString . PHP_EOL;
18}
19
20// カンマで終わる文字列を用意
21$fruitsList = 'apple,banana,orange,';
22
23// 関数を実行して結果を表示
24demonstrateRtrimWithComma($fruitsList);

PHPのrtrim()関数は、文字列の末尾(右側)から指定した文字を取り除くための関数です。このサンプルコードでは、rtrim()関数を使用して、CSV形式のデータなどで見られる文字列の末尾に不要に付加されたカンマを削除する具体的な方法を示しています。

rtrim()の第1引数には、処理対象となる文字列(この例では'apple,banana,orange,')を渡します。第2引数には、削除したい文字を指定します。この例ではカンマ,を明示的に指定しているため、rtrim()は文字列の末尾からカンマを探し、見つかった限り削除します。もし第2引数を省略した場合は、スペースや改行などの空白文字がデフォルトで削除対象となります。

このコードの実行結果として、末尾のカンマが取り除かれた新しい文字列'apple,banana,orange'が生成され、戻り値として返されます。元の文字列の値は変更されないという点も重要です。このように、rtrim()はデータの整形などで末尾の特定の文字を安全に除去したい場合に非常に便利な関数です。

rtrim()関数は、文字列の末尾から第2引数で指定した文字を削除します。注意点として、この関数は末尾に指定文字が連続している限り、すべてを削除します。例えば'text,,,'からカンマを削除すると、結果は'text'となります。末尾の1文字だけを削除するわけではない点に気をつけてください。また、この関数は元の文字列を直接変更しません。処理結果として新しい文字列を返すため、サンプルコードのように戻り値を変数に代入して使う必要があります。第2引数を省略した場合は、カンマではなく空白や改行文字がデフォルトで削除対象となります。意図しない文字まで削除しないよう、対象を正確に指定することが大切です。

PHP rtrimで複数文字を削除する

1<?php
2
3// rtrim関数は、文字列の右端から指定された文字を削除します。
4// 第2引数に複数の文字を文字列として指定することで、それらの文字がいずれか一つでも右端にある限り削除されます。
5
6// 例1: スペース、改行、タブ、特定の記号を右端から削除
7$originalString1 = "  Hello PHP World!@@@   \n\t";
8// 削除したい複数の文字を第2引数として指定します。
9// ここではスペース、@、改行(\n)、タブ(\t)が削除対象です。
10$charactersToRemove1 = " @\n\t";
11
12echo "元々の文字列1:      '" . $originalString1 . "'\n";
13echo "削除対象の文字1:  '" . $charactersToRemove1 . "'\n";
14
15// rtrim関数を実行し、結果を変数に格納します。
16$trimmedString1 = rtrim($originalString1, $charactersToRemove1);
17
18echo "処理後の文字列1:    '" . $trimmedString1 . "'\n";
19
20// 例2: 数字や異なる記号を右端から削除
21$originalString2 = "Data ID:12345abc--...!!!";
22// ここではハイフン(-)、ピリオド(.)、感嘆符(!)が削除対象です。
23$charactersToRemove2 = "-.!";
24
25echo "\n元々の文字列2:      '" . $originalString2 . "'\n";
26echo "削除対象の文字2:  '" . $charactersToRemove2 . "'\n";
27
28$trimmedString2 = rtrim($originalString2, $charactersToRemove2);
29
30echo "処理後の文字列2:    '" . $trimmedString2 . "'\n";
31
32?>

PHPのrtrim関数は、文字列の右端から特定の文字を削除するために使用される関数です。主に、文字列の末尾に付加された不要な空白文字や特定の記号などを除去する際に役立ちます。

この関数は2つの引数を取ります。第1引数には、処理対象となる元の文字列を指定します。第2引数には、削除したい文字の集合を文字列として指定します。この第2引数に複数の文字を含めることで、それらの文字がいずれか一つでも元の文字列の右端に連続して存在する場合、すべて削除されます。例えば、" @\n\t"と指定した場合、文字列の右端にあるスペース、@記号、改行、タブが、それらが連続する限り削除され続けます。関数の戻り値としては、指定された文字が右端から削除された新しい文字列が返されます。元の文字列自体は変更されません。

サンプルコードでは、このrtrim関数の挙動を2つの例で示しています。最初の例では、" Hello PHP World!@@@ \n\t"という文字列から、スペース、@、改行、タブといった複数の文字を右端から削除しています。これにより、右端の不要な空白や記号が取り除かれ、整えられた文字列が得られます。2つ目の例では、"Data ID:12345abc--...!!!"という文字列からハイフン、ピリオド、感嘆符を右端から削除しており、異なる種類の記号の除去にも対応できることがわかります。このように、rtrim関数は文字列の後処理において非常に便利な機能を提供します。

rtrim関数は、文字列の右端からのみ指定された文字を削除する点にご注意ください。第2引数に与える文字列は、削除したい「文字の集合」として扱われます。例えば、「abc」と指定すると、右端に「cba」のような並びがあっても、各文字が削除対象であれば削除が続きます。これは特定の「文字列」を削除するわけではない点にご理解ください。また、第2引数を省略した場合、半角スペースや改行などの一般的な空白文字が削除されますが、全角スペースは含まれませんので、全角スペースを削除したい場合は明示的に指定する必要があります。

PHP rtrim で指定文字が削除されない理由

1<?php
2
3declare(strict_types=1);
4
5/**
6 * rtrim関数が期待通りに動作しない(not working)場合の一般的な原因と解決策を示します。
7 *
8 * よくある間違いは、特定の文字(例: '/', ',')を削除したいにもかかわらず、
9 * 第二引数でその文字を指定し忘れることです。
10 * 第二引数を省略すると、rtrimはデフォルトの空白文字のみを削除します。
11 */
12function demonstrateRtrimUsage(): void
13{
14    // --- シナリオ: URLの末尾にあるスラッシュ(/)を削除したい ---
15
16    $urlWithSlash = 'https://example.com/path/to/resource/';
17    $urlWithSpaces = 'https://example.com/path/   ';
18
19    // 1. よくある間違い: 第二引数を指定しない
20    // これでは末尾のスラッシュは削除されません。
21    // rtrimはデフォルトで空白文字(" \n\r\t\v\0")のみを削除するためです。
22    $trimmedUrlWrong = rtrim($urlWithSlash);
23    
24    echo '--- よくある間違いの例 ---' . PHP_EOL;
25    echo "元のURL: '{$urlWithSlash}'" . PHP_EOL;
26    echo "rtrim後: '{$trimmedUrlWrong}' (スラッシュは削除されない)" . PHP_EOL;
27    echo PHP_EOL;
28
29    // デフォルトの空白文字は正しく削除されます。
30    $trimmedUrlSpaces = rtrim($urlWithSpaces);
31    echo "元のURL: '{$urlWithSpaces}'" . PHP_EOL;
32    echo "rtrim後: '{$trimmedUrlSpaces}' (空白は削除された)" . PHP_EOL;
33    echo PHP_EOL;
34
35    // 2. 正しい使い方: 削除したい文字を第二引数に指定する
36    // 第二引数に'/'を指定することで、末尾のスラッシュが正しく削除されます。
37    $trimmedUrlCorrect = rtrim($urlWithSlash, '/');
38
39    echo '--- 正しい使い方の例 ---' . PHP_EOL;
40    echo "元のURL: '{$urlWithSlash}'" . PHP_EOL;
41    echo "rtrim後: '{$trimmedUrlCorrect}' (スラッシュが正しく削除された)" . PHP_EOL;
42    echo PHP_EOL;
43    
44    // 3. 応用: 複数の種類の文字を削除する
45    // 末尾のスラッシュと空白の両方を削除したい場合、第二引数に両方の文字を含めます。
46    $messyUrl = 'https://example.com/other/ / //';
47    
48    // 第二引数に" /"と指定すると、末尾にある空白とスラッシュがすべて削除されます。
49    // 文字の順序は関係ありません。
50    $trimmedMessyUrl = rtrim($messyUrl, ' /');
51
52    echo '--- 応用の例 ---' . PHP_EOL;
53    echo "元のURL: '{$messyUrl}'" . PHP_EOL;
54    echo "rtrim後: '{$trimmedMessyUrl}' (空白とスラッシュの両方が削除された)" . PHP_EOL;
55}
56
57// 関数を実行して結果を表示します
58demonstrateRtrimUsage();

rtrim関数は、文字列の末尾(右側)から特定の文字を取り除くために使用します。

この関数は2つの引数を取ります。第一引数には、処理対象となる文字列を渡します。第二引数は省略可能で、取り除きたい文字を指定します。もし第二引数を省略した場合は、スペース、タブ、改行といった決まった空白文字のみが削除対象となります。処理が完了すると、末尾の不要な文字が取り除かれた新しい文字列が戻り値として返されます。元の文字列は変更されません。

サンプルコードは、rtrim関数でよくある間違いを示しています。URLの末尾にあるスラッシュ/を削除しようとして、第二引数を指定し忘れるケースです。この場合、関数はデフォルトの空白文字しか認識しないため、スラッシュは削除されずに残ってしまいます。

意図した通りにスラッシュを削除するには、第二引数に削除したい文字である/を明確に指定する必要があります。このようにrtrim($url, '/')と記述することで、末尾のスラッシュを正しく取り除くことができます。さらに、空白とスラッシュの両方など、複数の文字を削除したい場合は、第二引数に' /'のように削除したい文字をすべて含めて指定します。

rtrim関数でスラッシュ(/)やカンマ(,)のような空白文字以外の文字を文字列の末尾から削除したい場合、第二引数に削除したい文字を必ず指定する必要があります。第二引数を省略すると、半角スペースや改行といった、あらかじめ定義された空白文字しか削除されません。これが、特定の記号を削除しようとした際に「期待通りに動かない」と感じる主な原因です。複数の種類の文字を削除するには、' /'のように第二引数に削除したい文字をすべて含んだ文字列を渡します。この関数は、文字列の末尾から、指定した文字セットに含まれる文字が連続している限りすべて取り除きます。

PHP rtrimで全角スペースを削除する

1<?php
2
3/**
4 * rtrim関数の使用例: 文字列の右端から特定の文字(特に全角スペース)を削除する。
5 *
6 * PHPのrtrim関数は、デフォルトでは半角スペース、タブ、改行などのホワイトスペース文字を削除します。
7 * 全角スペース「 」のようなマルチバイト文字を削除したい場合は、
8 * rtrim関数の第二引数に明示的にその文字を指定する必要があります。
9 * この例では、文字列の右端から半角および全角スペースを削除する方法を示します。
10 */
11
12// サンプル文字列を定義
13// 右端に半角スペース、タブ、改行、そして全角スペースを含む
14$originalString = "PHPは素晴らしい言語です。  \t\n ";
15
16// rtrim関数の第二引数に、削除したい文字のリストを指定します。
17// ここでは、デフォルトで削除されるホワイトスペース文字(半角スペース、タブ、改行など)に加えて、
18// 全角スペース「 」を明示的に含めています。
19$charactersToRemove = " \n\r\t\v\0 ";
20
21// rtrim関数を呼び出し、文字列の右端から指定された文字を削除します。
22$trimmedString = rtrim($originalString, $charactersToRemove);
23
24// 結果を出力して確認
25echo "元の文字列      : '" . $originalString . "'" . PHP_EOL;
26echo "rtrim後の文字列 : '" . $trimmedString . "'" . PHP_EOL;
27
28?>

PHPのrtrim関数は、文字列の右端から不要な特定の文字を削除するために使用される機能です。

この関数は主に二つの引数を取ります。一つ目の引数$stringには、処理を行いたい対象の文字列を指定します。二つ目の引数$charactersは、削除したい文字のリストを文字列として指定します。この引数は省略可能で、省略した場合は半角スペース、タブ、改行などの一般的なホワイトスペース文字がデフォルトで削除されます。関数は処理後、右端の指定された文字が削除された新しい文字列を戻り値として返します。

提供されたサンプルコードは、特に全角スペース「 」の削除方法に焦点を当てています。rtrim関数はデフォルト設定では全角スペースを削除しないため、もし全角スペースも取り除きたい場合は、第二引数$charactersに「 」を含めて明示的に指定する必要があります。この例では、"PHPは素晴らしい言語です。  \t\n "という文字列を対象に、半角スペース、タブ、改行といったデフォルトで削除される文字に加え、全角スペースも右端から削除しています。

結果として、元の文字列の右端にあったこれらの不要な文字がすべて取り除かれ、「PHPは素晴らしい言語です。」という、きれいに整形された文字列が得られていることが確認できます。rtrim関数を適切に利用することで、文字列の末尾を簡単に整理し、データの一貫性を保つことができます。

rtrim関数は、文字列の右端から指定された文字のみを削除します。デフォルトでは半角スペース、タブ、改行などのホワイトスペースが対象であり、全角スペースは削除されません。全角スペース「 」を削除したい場合は、第二引数に明示的に含めて指定する必要があります。この第二引数は削除したい文字のリストとして機能し、その中のいずれかの文字に合致する限り右端から削除が続きます。文字列全体ではなく、右端に連続する対象文字のみが削除される点にご注意ください。また、全角文字を扱う際には、PHPの文字エンコーディングが適切(一般的にはUTF-8)に設定されていることを確認すると、意図しない文字化けを防ぎ、安全に利用できます。左端を削除するにはltrim、両端を削除するにはtrim関数を使用します。

関連コンテンツ

関連プログラミング言語