【PHP】文字列から改行コードを削除する方法
更新日:2023/03/17
改行コードはプラットホームにより異なります。
PHPで文字列から改行を削除するときは様々な改行コードに対応させる必要があり、自分で考えるのは少し難しいかもしれません。
そこで今回は、PHPで文字列から改行を削除するときの定番コードを紹介します。
改行コードを削除するコード
文字列から改行コードを削除するときは、次のコードを使用します。
$text = str_replace( array("\r\n", "\r", "\n"), '' , $text);
str_replace()は、第一引数の文字を第二引数の文字で置換する関数です。
第一引数が配列の場合は、配列要素の全てが対象になります。
冒頭で改行はコードは様々なものがあると書いていますが、実際は次の3つです。
コード名 | 値 | 意味 |
---|---|---|
CR + LF | 16進数:0d0a 文字: \r\n | 左に移動後、次行に移動 |
CR | 16進数:0d 文字: \r | 左に移動 |
LF | 16進数: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
関連記事
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。