PHPで特定の文字列を削除する場合、str_replace()
を使うと便利です。
他にも、先頭や末尾の空白を削除するtrim
系の関数もあります。
目次
str_replace関数
特定の文字列を削除できます。
使い方
1 2 3 4 5 6 7 8 |
// 変数に文字列を格納 $str = '文字列の一部を削除するサンプル'; // 「サンプル」の文字列を「' '」(空文字)に変換 $replace = str_replace('サンプル', '', $str); // 結果的に「サンプル」の文字列が削除される echo $replace; |
以下のように表示される
文字列の一部を削除する
解説
str_replace()
は以下の書式で成り立っています。
str_replace(‘検索する値’, ‘置換後の値’, ‘置換対象の文字列’);
特定の文字列を別の文字列に置換する際に使う関数で、置換後の値を指定しないことで、削除するように応用した技になります。
上記のサンプルだと、「文字列の一部を削除するサンプル」という置換対象の文字列の中から、「サンプル」という値を検索し、' '
空文字に変換することで、結果的に検索した文字列を削除することができました。
この方法は文字列を削除する際、よく使われます。
trim、ltrim、rtirm関数
trim()
は先頭と末尾、ltrim()
は先頭、rtrim()
は末尾の空白を削除できます。
(空白文字は半角スペースやタブ、改行などで、全角スペースは削除されない)
文字列を指定することで、空白文字以外も削除できます。
先頭や末尾に半角スペースや半角記号が混入し、削除する際によく使いますね。
trim()の使い方
1 2 |
$str = ' abc '; //先頭と末尾にスペースが入っている echo trim($str); //先頭と末尾の半角スペースが削除される |
特定の文字列を指定すると、空白文字以外も削除できます。
1 2 |
$str = ',abc,'; //先頭と末尾に「,」(カンマ)が入っている echo trim($str, ','); //先頭と末尾の「,」(カンマ)が削除され「abc」と表示される |
ltrim()の使い方
1 2 |
$str = ' abc'; //先頭に半角スペースが入っている echo ltrim($str); //先頭の半角スペースが削除される |
特定の文字列を指定すると、空白文字以外も削除できます。
1 2 |
$str = ':abc'; //先頭に「:」(コロン)が入っている echo ltrim($str, ':'); //先頭の「:」(コロン)が削除され「abc」と表示される |
rtrim()の使い方
1 2 |
$str = 'abc '; //末尾に半角スペースが入っている echo rtrim($str); //末尾の半角スペースが削除される |
特定の文字列を指定すると、空白以外も削除できます。
1 2 |
$str = 'abc,'; //末尾に「,」(カンマ)が入っている echo rtrim($str, ','); //末尾の「,」(カンマ)が削除され「abc」と表示される |
全角文字を指定すると文字化けの原因に
第二引数を指定すると、空白文字以外も削除できますが、全角文字を指定すると文字化けすることが多いです。
基本的に第二引数は2バイト文字に対応していないため、正規表現を使ったり文字コードを指定したりとややこしくなります。
わたくしの場合、2バイト文字を削除する際は、str_replace()
を使うことが多いですね。
削除された後の値も削除対象になる
以下のように、先頭の文字が削除された後に先頭になる文字が、第二引数に指定されていた場合、さらに削除されます。
1 2 |
$str = 'abcb'; echo trim($str, 'ab'); //「abb」が削除され「c」のみ表示される |
上記のように先頭と末尾を削除しようと「ab」を第二引数に指定した場合、先頭ではない「b」も削除され、「c」しか表示されません。
先頭ではない、2番目の「b」も削除されてしまうのですが、なぜでしょう?
これは、まず先頭と末尾の「a」「b」が削除されると、「b」が先頭に繰り上げになり、これも削除されます。
コーディングの際は気をつけましょう。
rtrim()の使い方で
1
2
$str = ‘abc ‘; //末尾に半角スペースが入っている
echo ltrim($str); //末尾の半角スペースが削除される
となっていますが、
echo rtrim($str); //末尾の半角スペースが削除される
が正しいですよね?
確かに記述が間違っておりましたので修正しました。申し訳ございません。
ご指摘いただきありがとうございます。
rtrim()の使い方で、
$str = ‘abc ‘; //末尾に半角スペースが入っている
echo ltrim($str); //末尾の半角スペースが削除される
となっていますが、
rtrim($str)
の間違いですよね?