PHPで文字列を削除する2つの方法

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

PHPで特定の文字列を削除する場合、str_replace()を使うと便利です。

他にも、先頭や末尾の空白を削除するtrim系の関数もあります。

 

str_replace関数

特定の文字列を削除できます。

使い方

以下のように表示される

文字列の一部を削除する

解説

str_replace()は以下の書式で成り立っています。

str_replace(‘検索する値’, ‘置換後の値’, ‘置換対象の文字列’);

特定の文字列を別の文字列に置換する際に使う関数で、置換後の値を指定しないことで、削除するように応用した技になります。

上記のサンプルだと、「文字列の一部を削除するサンプル」という置換対象の文字列の中から、「サンプル」という値を検索し、' '空文字に変換することで、結果的に検索した文字列を削除することができました。

この方法は文字列を削除する際、よく使われます。

trim、ltrim、rtirm関数

trim()は先頭と末尾、ltrim()は先頭、rtrim()は末尾の空白を削除できます。

(空白文字は半角スペースやタブ、改行などで、全角スペースは削除されない)

文字列を指定することで、空白文字以外も削除できます。

先頭や末尾に半角スペースや半角記号が混入し、削除する際によく使いますね。

trim()の使い方

特定の文字列を指定すると、空白文字以外も削除できます。

ltrim()の使い方

特定の文字列を指定すると、空白文字以外も削除できます。

rtrim()の使い方

特定の文字列を指定すると、空白以外も削除できます。

全角文字を指定すると文字化けの原因に

第二引数を指定すると、空白文字以外も削除できますが、全角文字を指定すると文字化けすることが多いです。

基本的に第二引数は2バイト文字に対応していないため、正規表現を使ったり文字コードを指定したりとややこしくなります。

わたくしの場合、2バイト文字を削除する際は、str_replace()を使うことが多いですね。

削除された後の値も削除対象になる

以下のように、先頭の文字が削除された後に先頭になる文字が、第二引数に指定されていた場合、さらに削除されます。

上記のように先頭と末尾を削除しようと「ab」を第二引数に指定した場合、先頭ではない「b」も削除され、「c」しか表示されません。

先頭ではない、2番目の「b」も削除されてしまうのですが、なぜでしょう?

これは、まず先頭と末尾の「a」「b」が削除されると、「b」が先頭に繰り上げになり、これも削除されます。

コーディングの際は気をつけましょう。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメント

  1. くまやす より:

    rtrim()の使い方で
    1
    2
    $str = ‘abc ‘; //末尾に半角スペースが入っている
    echo ltrim($str); //末尾の半角スペースが削除される
    となっていますが、
    echo rtrim($str); //末尾の半角スペースが削除される
    が正しいですよね?

    1. flatFlag より:

      確かに記述が間違っておりましたので修正しました。申し訳ございません。
      ご指摘いただきありがとうございます。

  2. くまやす より:

    rtrim()の使い方で、
    $str = ‘abc ‘; //末尾に半角スペースが入っている
    echo ltrim($str); //末尾の半角スペースが削除される
    となっていますが、
    rtrim($str)
    の間違いですよね?

flatFlag へ返信する コメントをキャンセル

*