UPDATE:2023年06月02日
PHP の 改行
改行 簡単まとめ
- 改行 はプログラムに影響 しない
- <br/> は ウェブブラウザ上での改行
- "\n" は ソースコード上での改行
- LF / CR / LF+CR は OS の エディタ(編集ソフト)上での改行
- nl2br() 関数は 改行コード の直前に HTMLの <br/> を挿入する
改行
- 改行 はプログラムに影響 しない
PHPのプログラムコードをエディタ(編集ソフト=Dreamweaver、秀丸、Atom など)等で記述する際、改行(エンターキー) はプログラムに影響を及ぼしません。コード中に 改行 をどんなに記述してもPHPでは無視されます。例えば、以下のように無意味に 改行 を記述したとしても、それらは無視されるのでプログラムには影響しません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <body> <?php echo '改行'; echo '改行'; echo '改行'; ?> </body> </html> |
結果は
となります。
上記の例のコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php echo '改行'; echo '改行'; echo '改行'; ?> |
は、PHPにとって以下のコードと同じ意になります。
1 | <?php echo '改行';echo '改行';echo '改行'; ?> |
改行 はPHPでは無視されますが、人間が読み易いコードを記述するために使用します。空白(半角スペース)も 改行 と同様にPHPでは無視されるので、改行 や 空白 を適所で挿入し、見易いコードを記述してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <body> <?php if(TRUE){ echo "複数行で空白文字を使用して記述<br/>\n"; }else{ echo "実行しない<br/>\n"; } ?> </body> </html> |
結果は
となります。
改行 や 空白 を使用しないで一行に纏めて記述すると以下のようになります。
1 | if(TRUE){echo"1行で記述<br/>\n";}else{echo"実行しない<br/>\n";} |
とても見づらいコードですね。
このように、PHPではプログラムの記述を一行にまとめることもできますし、複数行 で 空白文字 を使用して見易いコードを記述することもできます。当然、改行 や 空白文字 を使用して見易いコードを記述することがより良いプログラムコードを記述するのには必要でしょう。改行 や 空白 でインデントを作成し、見易く読み易いコードを記述するようにしましょう。
改行の種類
- 改行 とは 改行コードを表す制御文字列
- <br/> は ウェブブラウザ上での改行
- "\n" は ソースコード上での改行
- LF / CR / LF+CR は OS の エディタ(編集ソフト)上での改行
- nl2br() 関数は 改行コード の直前に HTMLの <br/> を挿入する
改行とは、改行コードを表す制御文字列のことです。改行にはいくつか表現方法と表現の場があります。ウェブブラウザ上で改行を表す場合、ソースコード上で改行を表す場合、各 OS のエディタ(編集ソフト=Dreamweaver、秀丸、Atom など)で改行を表す場合とそれぞれで異なります。
ウェブブラウザ上で改行 <br/>
エディタ上
エディタでは以下のように記述します。
1 2 3 4 5 6 7 8 9 10 11 12 | <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <body> <?php echo "文字列1行目<br/>"; echo "文字列2行目<br/>"; ?> </body> </html> |
ブラウザ上
上記のコードをブラウザで表示させた場合
文字列2行目
となり、改行が表現されています。
<br/>がない場合
<br/>を入力せずに、エディタだけで改行を入力している場合はブラウザ上で改行されません。
1 2 3 4 5 6 7 8 9 10 11 12 | <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <body> <?php echo "文字列1行目"; echo "文字列2行目"; ?> </body> </html> |
ブラウザで表示させた場合
となり、1行になってしまいます。
ソースコード上で改行を表現 "\n"
次に、ソースコード上で改行を表現するには、PHPのコード中に「"\n"」を記述します。ソースコードを表示(ブラウザで右クリックしてページのソースを表示)させた場合に改行が入ります。また、改行を表現する「"\n"」は、「" (ダブルクォート)」で括る必要があります。「' (シングルクォート)」では「 \n 」がそのまま文字列として表示されてしまうので注意して下さい。
エディタ上 "\n" なし <br/> のみ
ブラウザで改行を表現する <br/> のみ入力している場合、ブラウザ上では改行が入りますが、ソースコード上では改行が入りません。
1 2 3 4 5 6 7 8 9 10 11 12 | <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <body> <?php echo "文字列1行目<br/>"; echo "文字列2行目<br/>"; ?> </body> </html> |
ソースコード上
ソースコード上では改行が入らず、
1 2 3 4 5 6 7 8 | <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <body> 文字列1行目<br/>文字列2行目<br/></body> </html> |
となってしまいます。
ブラウザで表示させた場合
文字列2行目
となり <br/> により改行が入っています。
"\n" も入力する
ソースコード上で改行を表現する「"\n"」を記述します。
1 2 3 4 5 6 7 8 9 10 11 12 | <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <body> <?php echo "文字列1行目<br/>\n"; echo "文字列2行目<br/>\n"; ?> </body> </html> |
ソースコードを表示させた場合
1 2 3 4 5 6 7 8 9 10 | <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <body> 文字列1行目<br/> 文字列2行目<br/> </body> </html> |
となり、改行が入ります。
これで、ブラウザ上でもソースコード上でも改行が入るようになります。
"\n" は空白文字として扱われる
PHP において 改行コード:「 "\n" 」 は空白文字として扱われます。PHPでは、空白文字かどうかチェックする関数 ctype_space() が用意されているので、確認してみます。空白文字であれば TRUE を返し、そうでなければ FALSE を返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $strings = array( '空白文字' => " ", '改行コード(ラインフィード)' => "\n", ); foreach($strings as $name => $value) { if(ctype_space($value)){ print "この文字列 [ $name ] は、空白文字です。\n<br/>"; }else{ print "この文字列 [ $name ] は、空白文字ではありません。\n<br/>"; } } ?> |
結果は
この文字列 [ 改行コード(ラインフィード) ] は、空白文字です。
となります。
その他に、タブ:「 "\t" 」、垂直タブ:「 "\v" 」、復帰:「 "\r" 」も空白文字として扱われます。
OS の エディタ(編集ソフト) 上で改行を表現
HTMLファイルの場合は、すべての改行コードをブラウザが適切に扱ってくれるので無視しても大丈夫です。CGIの場合は、改行コードを適切に変換してサーバーへ転送する必要があります。例えばWindowsOSで作成したCGIファイルをUNIX OSへ送る際は、改行コードを CR+LF → LF へ変換してから転送します。FTPソフトが自動で変換することもあるので、環境に合わせて確認してみましょう。
改行コード早見表
改行コード | OS | 読み | 「od -c」コマンドでの表示 |
---|---|---|---|
LF | Unix/Linux/Mac(OSX)標準 | ラインフィード:line feed | \n |
CR | Macintosh(MacOS 9)標準 | キャリッジリターン:carriage return | \r |
CR+LF | Windows/MS-DOS標準 | CRコードとLFコードが対で1組 | \r\n |
改行コードの確認
ファイルの改行コードを確認する場合は、「od -c」コマンドで確認できます。SSH などでサーバーに接続して確認してみましょう。
test.txt ファイルを作成し、以下の内容を入力します。
1 2 3 4 | string string string string |
各OS で作成したファイルを od -c test.txt で確認すると以下のように表示されます。
Unixでの表示
改行コード:\n
1 2 3 | 0000000 s t r i n g \n s t r i n g \n s t 0000020 r i n g \n s t r i n g 0000033 |
Macintoshでの表示
改行コード:\r
1 2 3 | 0000000 s t r i n g \r s t r i n g \r s t 0000020 r i n g \r s t r i n g 0000033 |
Windowsでの表示
改行コード:\r \n
1 2 3 | 0000000 s t r i n g \r \n s t r i n g \r \n 0000020 s t r i n g \r \n s t r i n g 0000037 |
nl2br() 関数で <br/> を挿入する
nl2br() を使用する
改行コード "\n" を挿入しているテキストに nl2br() を使用して print で表示させてみます。
1 2 3 4 5 | <?php $string = "テキスト1\nテキスト2\nテキスト3\nテキスト4\nテキスト5\n"; $string = nl2br($string); print $string; ?> |
改行コード "\n" の直前にHTMLの <br/>タグが挿入されるので、ブラウザで表示した場合、結果は
テキスト1
テキスト2
テキスト3
テキスト4
テキスト5
となります。
ソースコードで見ると 改行コードによって改行が挿入され、さらに、HTMLの <br/>タグ も挿入されているのが分かります。
テキスト2<br />
テキスト3<br />
テキスト4<br />
テキスト5<br />
また、改行:「 "\n" 」以外に、復帰:「 "\r" 」、「 "\n\r" 」、「 "\r\n" 」の前にもHTMLの <br/>タグが挿入されます。
"\n" のみ挿入
"\n" のみの場合、<br/>タグ は挿入されていないので、ブラウザで表示させると改行は入れません。
1 2 3 | <?php $string = "テキスト1\nテキスト2\nテキスト3\nテキスト4\nテキスト5\n"; print $string; |
ブラウザで表示した場合、結果は
となります。
ソースコードで見ると、"\n" の箇所が改行となります。
テキスト2
テキスト3
テキスト4
テキスト5
サンプルコード
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 <!DOCTYPE html><html lang="ja"><head><meta charset="UTF-8"></head><body> <h3>空白</h3><?php //空白文字 //空白文字 //空白文字?> <h3>改行</h3><?php//複数行で空白文字を使用して記述if(TRUE){ echo '複数行で空白文字を使用して記述<br/>';}else{ echo '実行しない<br/>';}?> <h3>改行</h3><?phpecho "改行する<br/>\n";echo "改行する<br/>\n";?> <h3>1行で記述</h3><?php//1行で記述if(TRUE){echo'1行で記述<br/>';}else{echo'実行しない<br/>';}?> <h3>空白と改行</h3><?php echo '空白'; echo '改行';?> <h3>ブラウザ上で空白を表現</h3><?phpecho ' 空白';?> </body></html>
実行結果 空白改行
複数行で空白文字を使用して記述
改行
改行する
改行する
1行で記述
1行で記述
空白と改行
空白改行
ブラウザ上で空白を表現
空白
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <body> <h3>空白</h3> <?php //空白文字 //空白文字 //空白文字 ?> <h3>改行</h3> <?php //複数行で空白文字を使用して記述 if(TRUE){ echo '複数行で空白文字を使用して記述<br/>'; }else{ echo '実行しない<br/>'; } ?> <h3>改行</h3> <?php echo "改行する<br/>\n"; echo "改行する<br/>\n"; ?> <h3>1行で記述</h3> <?php //1行で記述 if(TRUE){echo'1行で記述<br/>';}else{echo'実行しない<br/>';} ?> <h3>空白と改行</h3> <?php echo '空白'; echo '改行'; ?> <h3>ブラウザ上で空白を表現</h3> <?php echo ' 空白'; ?> </body> </html> |
改行
複数行で空白文字を使用して記述
改行
改行する
改行する
1行で記述
1行で記述
空白と改行
空白改行
ブラウザ上で空白を表現
空白
タグ(=記事関連ワード)
日付
最終更新日:2023年06月02日