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