PHPで空白を消すときに使用する、trim関数の使い方と関連関数の説明を記載しています。
下記の関数の使い方とサンプルコードを書いています。
ltrim
rtrim
trim関数と同じように、ltrim・rtrim関数も使えますが、削除対象になる場所が違います。
サンプルコードの検証にはPHP8を使っています。
trim関数の使い方
trim関数を文字列に対して使うと、文字列の先頭および末尾の余白を消してくれます。
例えば、下記のように使います。
<?php
echo trim(" apple "); // 結果「apple」
このようにすると、appleの前と後にある半角スペースが削除されて、結果として「apple」が出力されます。
文字列を直接渡していますが、変数を渡しても良いです。スペースが続く間、前後のスペースが削除されます。
つまりスペースを取り除きたい文字列を渡すと、文字列の前後からスペースを取り除いた結果が返ってきます。
※全角スペースは削除できません。マルチバイトに対応していなくて文字化けします。
もう一つの使い方として、第2引数を指定することが可能です。
例えば、下記のように使います。
<?php
echo trim("dddapple color red ddd", 'd'); // 結果「apple color red 」
第2引数に’d’を指定しました。
第2引数を指定すると、指定した文字のみを文字列の先頭と末尾から削除してくれます。
文字列の’d’が先頭と末尾から削除され、結果として「apple color red 」となります。
この場合は、先頭と末尾の指定された文字のみが削除されるので、スペースは無視されます。
複数の文字を対象に削除する場合は、文字を文字列にして複数渡します。
下記のように使ってみます。
<?php
$hello = "Hello World";
echo trim($hello, "Hdle"); // 結果「o Wor」
渡した文字列の「Hdle」に対応する文字が、第1引数の文字列から削除されます。
前後から対象の文字が全て削除され、結果として「o Wor」となります。
trim関数についての公式ドキュメントはこちらです。
ltrim関数の使い方
ltrim関数は、文字列の先頭だけ空白を取り除く関数です。
「l」なので「left trim」だと思います。
trimは先頭と末尾から空白を削除しましたが、ltrimは先頭のみが処理対象になります。
例えば、下記のように使用します。
<?php
echo ltrim(" banana "); // 結果「banana 」
先頭のスペースが削除されて、結果として「banana 」が返ってきます。
こちらも第2引数を渡すことが可能です。
例えば、下記のように使います。
<?php
echo ltrim("aaa banana aaa", 'a'); // 結果「 banana aaa」
第2引数に’a’を指定しました。
trim関数と同様にして、削除されますが先頭のみが対象になります。結果として「 banana aaa」となります。
複数の文字を対象にした場合です。
<?php
$hello = "Hello World";
echo ltrim($hello, "Hdle"); // 結果「o World」
先頭の方だけが対象となるので、上記の結果は「o World」となります。
ltrim関数についての公式ドキュメントはこちらです。
rtrim関数の使い方
rtrim関数は、文字列の末尾だけ空白を取り除く関数です。
こちらは「r」なので「right trim」だと思います。
既に名前から察せるかと思いますが、rtrimは文字列の末尾のみが削除処理対象になります。
例えば、下記のように使用します。
<?php
echo rtrim(" grape "); // 結果「 grape」
末尾のスペースが削除されて、結果として「 grape」が返ってきます。
こちらもtrim, ltrimと同様に第2引数が渡せます。
下記のように使うことができます。
<?php
echo rtrim("hhhgrapehhhh", 'h'); // 結果「hhhgrape」
第2引数に’h’を指定しました。
末尾のみが削除対象になるので、結果として「hhhgrape」が返ってきます。
複数の文字を対象にした場合です。
<?php
$hello = "Hello World";
echo rtrim($hello, "Hdle"); // 結果「Hello Wor」
rtrimは末尾だけ対象になるので、結果は「Hello Wor」となります。
rtrim関数についての公式ドキュメントはこちらです。
全角スペースを削除したい
trim関数で全角スペースを削除しようとした場合、文字化けを起こすことがあります。
文字列の間の全角も消えますが、問題ない場合はstr_replaceを下記のように代用すると良いです。
<?php
echo str_replace(' ', '', ' アイウエオ '); // 結果「アイウエオ」
終わりに
今回は文字列の空白(スペース)を消してくれるtrim関数について確認してみました。
紹介した関数の挙動をまとめると下記のようになります。
ltrimが前のスペースを削除
rtrimが後のスペースを削除
マルチバイト文字に対応していないので、マルチバイトを扱う場合は、str_replaceやpreg_replaceなどを使用した方が良さそうですね。
コメント