Search

検索したいワードを入力してください

2019年03月13日

PHPのechoを使った改行の方法と改行を削除する方法を解説

この記事では、PHPのechoを使った改行の方法と、改行を削除する方法について紹介しています。データを確認したり、データを見やすい形で出力する際に改行で整える場面は多いので、この記事の内容をしっかり把握してよしなに利用できるようになっておきましょう。

PHPのechoを使った改行の方法と改行を削除する方法を解説

PHPのechoとは

PHPのechoとは、文字列を出力する際に利用する宣言のことです。echo 値またはecho 変数と指定することで、値や変数の中身をブラウザなどに表示してくれます。改行は付与してくれないので、複数echoを連続して記述すると、全ての出力が横並びになります。

echoは関数ではなくPHPに備わった言語構造のため、関数のように括弧を記述する必要がありません。

以下にサンプルコードを示します。

サンプルコード
echo 'taro'; //文字列
echo 1; //数値
$name = 'jiro';
echo $name; //変数


結果
taro1jiro

出力が横並びになっていることがわかります。

また、文字列や数値以外の型(例:配列)をechoに指定するとエラーが生じますので注意して下さい。

サンプルコード
echo [1, 2, 3]; //配列
echo ['a' => 'b']; //連想配列


結果
PHP Notice: Array to string conversion
PHP Notice: Array to string conversion

echoを使った改行の方法やより見やすくする方法

先程の解説で、普通echoでは改行が付与されないことを解説しました。ですが、それだと非常に見づらい出力しか得ることができません。

改行を指定することで、見やすい出力を得ることができます。この章ではその方法について解説していきます。

brタグを改行したい箇所に追加してブラウザ上で改行する方法

ブラウザ表示で改行したい場合は、brタグを利用します。PHPではechoでHTMLタグを指定すると、ブラウザで表示した際にタグをHTMLとして認識してくれます。

以下にサンプルコードを示します。

サンプルコード
echo 'HELLO';
echo '
';
echo 'WORLD';


結果

改行したい箇所に改行コードを指定してソースコード上で改行をする方法

次は、ソースコード上で改行する方法について解説します。先程のbrタグはHTMLタグの一種のため、ブラウザ上での改行しかできません。ソースコード上で改行するためには、改行コードと呼ばれる文字列を使用します。

改行コードはPHPを動かす環境(OS)によって異なるのですが、ここでは\nを使って改行をします。これをechoに指定することで、表示の際に改行が行われます。

ただし改行コードを指定して改行する際は、\nを"(ダブルクオーテーション)で囲まなければなりません。'(シングルクオーテーション)で囲んでしまうと、改行がされず単に\nが文字列として表示されるだけになります。

以下にサンプルコードを示します。

サンプルコード
echo 'HELLO';
echo "\n"; //ダブルクオーテーション
echo 'WORLD';
echo '\n'; //シングルクオーテーション
echo 'ON PHP';


結果
HELLO
WORLD\nON PHP


\nをダブルクオーテーションで囲んだ場合のみ改行され、シングルクオーテーションで囲んだ場合はそのまま文字として出力されていることがわかります。

改行コードの一覧

先程の節で、改行コードはPHPの動作環境(OS)によって異なると記載しました。これについて、動作環境(OS)と改行コードの一覧表を載せておきますのでご確認下さい。

改行コード名意味改行コードOS
CR復帰\rMac OS(9以前)
LF改行\nUNIX、MAC OS
CRLF復帰+改行\r\nWindows系

細かな違いがあり複雑なように感じるかもしれませんが、現在はほとんどの場合で\nで大丈夫なようです。もしそれで上手く行かなかったら\r\nを利用するぐらいで捉えておけばよいでしょう。

定数PHP_EOLを使ってOSを意識することなく改行コードの定数を指定する方法

先程の節で、動作環境(OS)で改行コードが異なることを学びました。しかし環境によって異なる改行コードを指定するのは非常に面倒です。PHPでは、これを解消してくれる定数を用意してくれています。PHP_EOLという定数を利用して、環境によらずに改行を指定することができます。

サンプルコードを以下に示します。

サンプルコード
echo 'HELLO';
echo PHP_EOL;
echo 'WORLD';


結果
HELLO
WORLD

改行を削除する方法

この章では、改行を削除する方法について解説します。テキストファイルからリスト形式のデータを取得した際などに、改行を削除するといった処理が必要になってきます。PHPプログラミングにおいて非常に重要な処理となりますので、この章でしっかりと理解していきましょう。

str_replace関数を使って改行を削除する方法

PHPのstr_replace関数を利用すると、改行を削除することができます。str_replace関数は、本来文字列の置換を行う関数です。str_replace(置換対象文字列, 置換文字列, 対象文字列);と指定することで、対象文字列の中の置換対象文字列を置換文字列で置き換えます。

この置換対象文字列に改行コード、置換文字列に空文字、対象文字列に改行を削除したいデータを渡すことで、改行を削除することができます。

以下にサンプルコードを示します。

サンプルコード
$sample = <<< EOF
aaaa
bbbb
cccc
EOF;
echo $sample;
echo PHP_EOL;
echo str_replace("\n", '', $sample);
echo PHP_EOL;
echo str_replace(PHP_EOL, '', $sample);


結果
aaaa
bbbb
cccc
aaaabbbbcccc
aaaabbbbcccc

置換対象文字列にPHP_EOLを指定しても大丈夫です。

全ての動作環境(OS)に対する改行コードを指定したい場合は、str_replace(array("\r", "\n", "\r\n"), '', $sample);と指定します。第一引数に配列を代入すると、その配列の要素全てに対して探索と置換をしてくれます。

なお、str_replace(array("\r", "\n"), '', $sample);としても全てのパターンを網羅できます。なぜこれで網羅できるのかは考えてみてください。

preg_replace関数を使って改行を削除する方法

PHPのpreg_replace関数を使っても改行を削除することができます。preg_replace(置換対象文字列を表す正規表現, 置換文字列, 対象文字列)と指定します。str_replaceとの違いは、正規表現が利用できるかどうかの違いです。

以下にサンプルコードを示します。

サンプルコード
$sample = <<< EOF
aaaa
bbbb
cccc
EOF;
echo $sample;
echo PHP_EOL;
echo preg_replace('/\r|\n|\r\n/', '', $sample);


結果
aaaa
bbbb
cccc
aaaabbbbcccc

preg_replace関数の第一引数の両端にある/はデリミタというもので、正規表現を扱う場合には必須なものです。なお必ずしも/である必要はありません。

次に、各改行コードの間に|の指定をしてます。これは正規表現で「または」を表す記号です。なので、このサンプルの第一引数は、「\rまたは\nまたは\r\n」という指示を意味した正規表現となっています。

なお、preg_replace関数もstr_replace関数と同様に、第一引数に配列をしていすることが可能です。第一引数に配列が指定された場合は、その配列要素の正規表現それぞれに対して一致する文字列を置換文字列で置換します。

PHPにおいてpreg_で始まる関数は正規表現を利用する関数のことを意味しています。正規表現に関しては以下のドキュメントを参照して下さい。

trim関数を使って改行を削除する方法

PHPのtrim関数を利用しても、改行を削除することができます。trim関数は本来、文字列の両端から指定した文字列を削除する関数です。trim(削除文字列)と指定します。

なお、trim()と引数を省略することもでき、この場合は以下の文字列が削除される形になります。
・" ", 通常の空白。
・"\t", タブ。
・"\n", リターン。
・"\r", 改行。
・"\0", NULバイト
・"\x0B", 垂直タブ

つまり、文字列の両端から改行を取り除く場合は文字列.trim();と指定すればOKです。ただし、両端のものしか削除できないので、文字列中に存在する改行に関してはtrim関数では削除できません。

以下にサンプルコードを示します。

サンプルコード
$sample1 = 'sample
';
$sample2 = <<< EOF
aaaa
bbbb
cccc
EOF;
echo $sample1;
echo PHP_EOL;
echo trim($sample1);
echo PHP_EOL;
echo $sample2;
echo PHP_EOL;
echo trim($sample2);


結果
sample

sample
aaaa
bbbb
cccc
aaaa
bbbb
cccc

trim関数で文字列両端の改行は削除できるが、文字列中の改行が削除できないのを確認できたと思います。

この関数が活躍する場面は、「ファイルにリスト化された文字列を1行ずつ読み取り配列要素とする」際などに活躍します。文字列を1行ずつ読み取る際に、改行コードも一緒に読み取ってしまうのを削除する必要があるからです。その際に、配列の全要素をtrim関数に通してあげると解決できます。

例えば、以下のサンプルコードを見て下さい

サンプルコード
sample.txt
aaaa
bbbb
cccc


index.php
$file = fopen('sample.txt', 'r');
$array = array();
while ($line = fgets($file)) {
$array[] = $line;
}
print_r($array);


結果
Array
(
[0] => aaaa

[1] => bbbb

[2] => cccc
)


このように、ファイルからリストをそのまま読み取ると改行も読み取ってしまうため、出力が不自然な形となってしまいます。

そこで、trim関数を以下のように利用します。

サンプルコード
index.php
$file = fopen('sample.txt', 'r');
$array = array();
while ($line = fgets($file)) {
$array[] = trim($line);
}
print_r($array);


結果
Array
(
[0] => aaaa
[1] => bbbb
[2] => cccc
)

すると、配列の要素から改行が消された形となり、出力がすっきりしました。このように、trim関数は両端のみ削除という制限がありますが、とても簡単な指示で不要な文字列を削除してくれるため、とても使い勝手のいい関数です。

PHPの改行の方法と削除方法のまとめ

今回は、PHPの改行と改行の削除を行う方法をいくつか紹介しました。さまざまな関数や、注意点が出てきました。しっかりと整理して、目的に沿ったプログラムがかけるようにしましょう。

str_replacepreg_replacetrimに関しては、ここで紹介した以外の利用もできるので公式ドキュメントなど読んでみると学習が深まります。

多くの人がプログラミングを諦めてしまう理由をご存知ですか?



近年プログラミングを勉強する人が増えています。

プログラミング学習者の多くは独学から取り組もうとしますが、だいたい80%ほどは3ヶ月も続かずに諦めてしまいます。早い人は1日目で。

多くの人がプログラミングを独学しようとして諦める理由は、次の3つ。
●モチベーションが維持できない
●エラーの原因・解決方法が分からない
●どう学習すればよいか分からない

TechBoostというプログラミングスクールでは、みんなと一緒にプログラミングをするのでモチベーションの維持ができ、分からないことがあればマンツーマンで教えてくれ、徹底的に研究された初心者向けの教材が揃っています。

TechBoostを卒業後、実際にエンジニアとして転職した方もいるほど。

本気でプログラミングを学びたい方は、一度無料のカウンセリングでご相談ください。プログラミングを嫌いになる前に。

tech boost卒業生インタビュー

tech boostの卒業生の声を聞きました。あなたがプログラミングを学びたい理由を、一度考えてみてください。
営業→Javaエンジニア→Rubyエンジニアと転向し、第一志望のFinTech企業で働く山下さん
元営業、ビジネスのわかるエンジニアを目指す菅原さん
サンフランシスコに交換留学し、シリコンバレーのVCでインターン中の梅本さん
予備校の営業から半年でエンジニア転職を果たした小田島さん

tech boostの口コミ



Related