文字列操作

【PHP】文字列から改行コードを削除する方法

更新日:2023/03/17

改行コードはプラットホームにより異なります。
PHPで文字列から改行を削除するときは様々な改行コードに対応させる必要があり、自分で考えるのは少し難しいかもしれません。

そこで今回は、PHPで文字列から改行を削除するときの定番コードを紹介します。

 

改行コードを削除するコード

文字列から改行コードを削除するときは、次のコードを使用します。

$text = str_replace( array("\r\n", "\r", "\n"), '' , $text);

str_replace()は、第一引数の文字を第二引数の文字で置換する関数です。
第一引数が配列の場合は、配列要素の全てが対象になります。

冒頭で改行はコードは様々なものがあると書いていますが、実際は次の3つです。

コード名意味
CR + LF16進数:0d0a 文字: \r\n左に移動後、次行に移動
CR16進数:0d 文字: \r左に移動
LF16進数:0a 文字: \n次行に移動

PHPの文字列は シングルクォーテーション(')または ダブルクォーテーション(")で囲みますが、ここでは必ずダブルクォーテーションを使用します。

理由は、このページの備考を見てください。

頻繁に改行コードを削除する時は、関数化しましょう。

function cr_remove( $text ){
    return str_replace(array("\r\n", "\r", "\n"), '' , $text);
}

 

使い方

ヒアドキュメントで定義した文字列から、改行を削除します。

$text = <<<EOF
文字列から
改行コードを
削除したい
EOF;

echo cr_remove( $text );
 // 結果: 文字列から改行コードを削除したい

Webページを取得して、改行を削除します。

$webcontents = file_get_contents('https://ドメイン名/');
echo cr_remove( $webcontents );

 

PHP_EOLでの改行削除はNG

PHPは改行コードを表すPHP_EOLという定数があります。
そのため、次のようなコードでの改行削除が考えられます。

$text = str_replace( PHP_EOL , '' , $text);

残念ながらPHP_EOLはOS上で使用される改行コードを表すものです。
そのため、"\r\n" , "\r" , "\n"のどれか一つにしか対応できません。

『改行コードはOS上のコードのみ』という保証があるケースはほとんどないので、今回のケースではPHP_EOLを使用できないのです。

 

備考:シングルクォーテーションとダブルクォーテーションの違い

シングルクォーテーションとダブルクォーテーションは、次のような動作上の違いがあります。

動作
シングルクォーテーション文字をそのまま取り込む
$a='a\nb';echo $a; // a\nb

改行されない

ダブルクォーテーション特殊文字を変換して取り込む
$a="a\nb";echo $a; // a
                   // b

改行される

改行コードは特殊文字なので、変数に取り込むときに変換させる必要があります。
そのため、ダブルクォーテーションで囲みます。

更新日:2023/03/17

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。