ここではPHPで文字列の最後の文字を削除する方法について紹介しています。
文字列の最後の1文字を削除する方法は様々ありますが、簡単な方法としてはsubstr()
を使う方法と、rtrim()
を使う方法があります。
それぞれについて詳しく解説していきます。
substr()関数を使って文字列の最後の文字を削除する
substr()
は文字列の一部を切り出す関数です。
ただしsubstr()
で対応できるのはシングルバイトの文字列です。マルチバイトの文字列を扱うときはmb_substr()
を使います。
substr()の使い方
substr()
の構文は以下のようになっています。
substr(string $string, int $offset, int $length = null)
パラメータ | 説明 |
---|---|
string | 入力文字列 |
offset | 0から数えてoffset番目から始まる文字列が返される。 |
length | lengthが正の場合はoffsetから数えてlength分の文字列を返す。lengthが負の場合は、文字列の最後からlength分の文字が省略される。lengthが指定されない場合はoffsetの位置から文字列の最後までを返す。 |
ここで注目してほしいのは、length
が負の値のときは文字列の最後から指定した長さの分だけ文字が省略されるということです。
offset
を0
、length
を-1
にすることで文字列の最後の文字を削除することができます。
$str = '123456789';
echo substr($str, 0, -1); //12345678 を出力
lengthを正の値にする場合
length
を-1
とするのが一番簡単な方法ですが、正の値で指定することも可能です。
その場合には文字列の長さよりも1文字分短い長さを指定すればOKです。
$str = '123456789';
echo substr($str,0, strlen($str)-1); //12345678 を出力
見て分かる通りlength
は負の値を指定した方が簡単ですね。
mb_substr()関数を使って文字列の最後の文字を削除する
mb_substr()
はマルチバイトに対応した文字列の一部を切り出す関数です。
処理したい文字列がマルチバイトのときはmb_substr()
を使います。
マルチバイトの文字列から最後の1文字を削除する例として
青森県
岩手県
秋田県
東京都
といった文字列の最後の「県」や「都」という文字を削除するといった使い方が考えられます。
mb_substr()の使い方
mb_substr()
の構文は以下のようになっています。
mb_substr(string $string, int $offset, int $length = null, string $encoding)
パラメータ | 説明 |
---|---|
string | 入力文字列 |
offset | 0から数えてoffset番目から始まる文字列が返される。 |
length | lengthが正の場合はoffsetから数えてlength分の文字列を返す。lengthが負の場合は、文字列の最後からlength分の文字が省略される。lengthが指定されない場合はoffsetの位置から文字列の最後までを返す。 |
encoding | 文字エンコーディングを指定する。省略もしくはnullの場合は、内部文字エンコーディングを使用。 |
使い方はsubstr()
関数とほぼ同じです。
$ary = ['青森県','岩手県','秋田県','東京都'];
$ret = [];
foreach($ary as $str)
$ret[] = mb_substr($str, 0, -1);
$ret
の値を出力すると以下のようになります。
Array
(
[0] => 青森
[1] => 岩手
[2] => 秋田
[3] => 東京
)
このやり方で「北海道」という文字列を処理すると「北海」になります。「北海道」という文字列のときに「北海道」を返したい場合は、条件分を入れるなどして処理する必要があります。
rtrim()関数を使って文字列の最後の文字を削除する
rtrim()
は文字列の最後から空白もしくはその他の文字を削除する関数です。
rtrim()
の使用が向いているのは、文字列の最後にある「空白」(タブや改行を含む)を削除したいときや、削除したい文字が分かっているときです。
rtrim()の使い方
rtrim()
の構文は以下のようになっています。
rtrim(string $string, string $characters = "\n\r\t\v\0")
パラメータ | 説明 |
---|---|
string | 入力文字列 |
characters | 削除する文字を指定する。指定しない場合は空白文字を削除する。 |
characters
はリストにすることで、複数の文字を指定することができます。
characters
を指定しない場合は、空白文字が削除されます。対象となる空白文字は「スペース」「タブ」「改行」「復帰」「NULLバイト」「垂直タブ」です。
mb_substr()
の使い方の例では、「北海道」という文字列を処理するときに条件分岐が必要でした。rtrim()
では引数で指定できるので条件分岐が不要です。
$ary = ['青森県','岩手県','秋田県','東京都','北海道'];
$ret = [];
foreach($ary as $str)
$ret[] = rtrim($str, '県都');
これを出力すると以下のようになります。
Array
(
[0] => 青森
[1] => 岩手
[2] => 秋田
[3] => 東京
[4] => 北海道
)
削除したい文字として「県」「都」を指定したので、「道」は削除されずに残っていることが分かります。
[prism]