UPDATE:2024年08月11日
PHP の 改行
目次 [閉じる]
改行 簡単まとめ
- 改行 はプログラムに影響 しない
- <br> は ウェブブラウザ上での改行
- "\n" は ソースコード上での改行
- LF / CR / LF+CR は OS の エディタ(編集ソフト)上での改行
- nl2br() 関数は 改行コード の直前に HTMLの <br> を挿入する
- 改行の削除 は str_replace や preg_replace で可能
改行
- 改行 はプログラムに影響 しない
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 "改行や空白を使用し、複数行でインデントを加えて記述。"; }else{ echo "実行しない。"; } ?> </body> </html> |
結果は
となります。
改行 や 空白 を使用しないで一行に纏めて記述すると以下のようになります。
1 | if(TRUE){echo"1行空白無しで記述。";}else{echo"実行しない。";} |
とても見づらいコードですね。
このように、PHPではプログラムの記述を一行にまとめることもできますし、複数行 で 空白文字 を使用して見易いコードを記述することもできます。当然、改行 や 空白文字 を使用して見易いコードを記述することがより良いプログラムコードを記述するのには必要でしょう。改行 や 空白 でインデントを作成し、見易く読み易いコードを記述するようにしましょう。
改行の種類
- 改行 とは 改行コードを表す制御文字列
- <br> は ウェブブラウザ上での改行
- "\n" は ソースコード上での改行
- LF / CR / LF+CR は OS の エディタ(編集ソフト)上での改行
- nl2br() 関数は 改行コード の直前に HTMLの <br> を挿入する
改行とは、改行コードを表す制御文字列のことです。改行にはいくつか表現方法と表現の場があります。ウェブブラウザ上で改行を表す場合、ソースコード上で改行を表す場合、各 OS のエディタ(編集ソフト=Dreamweaver、秀丸、Atom など)で改行を表す場合とそれぞれで異なります。
ウェブブラウザ上で改行 <br>
まずブラウザ上で改行を表現するにはHTMLタグの「<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 の エディタ(編集ソフト) 上で改行を表現
PHPコードをエディタで編集する際、Enterキー で改行を入力すると改行コードが入ります。その改行コードは3種類あり、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> を挿入する
PHP の定義済み関数 nl2br() は、改行コード:「 "\n" 」の直前に自動でHTMLの <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
PHPで改行コードを削除
PHP で 改行コード を 削除 するには、str_replace や preg_replace を使用する方法があります。
改行コード早見表
改行コード | 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 |
str_replace で改行削除
str_replace は、検索文字列にヒットしたすべての文字列を指定文字列に置換する関数です。
取得した値 = str_replace(検索する値 ,置換する値, 検索対象の値);
※値は文字列か配列を指定可能
すべての改行コード(CR/LF/CR+LF)を置換するには、str_replace の第1パラメータに配列を指定、配列に改行コードの文字列を記述します。
配列にすることで、複数の検索文字列を指定することが出来ます。
1 2 3 4 5 | <?php $string = "テキスト1\nテキスト2\nテキスト3\nテキスト4\nテキスト5\n"; $string = str_replace(array('\r\n', '\r', '\n'), '', $string); echo $string; ?> |
ソースコードで見ると、"\n" の改行コードが削除され、1行で表示されます。
preg_replace で改行削除
preg_replace も、str_replace 同様に、検索にヒットしたすべての文字列を指定文字列に置換する関数です。
こちらの関数は、検索を行うパターンを正規表現で動作させます。
結果 = preg_replace(正規表現, 置換する文字列や配列, 入力文字列);
※正規表現のパターンを文字列もしくは配列とすることができます。
preg_replace では正規表現(検索する値)の最初と最後にデミリタを記載します。以下の例では「/(デミリタ)」を使用しています。
すべての改行コード(CR/LF/CR+LF)を置換するには、preg_replace の第1パラメータの正規表現に配列を指定し、配列に改行コードを記述します。
1 2 3 4 5 | <?php $string = "テキスト1\nテキスト2\nテキスト3\nテキスト4\nテキスト5\n"; $string = preg_replace(array('/\r\n/','/\r/','/\n/'), '', $string); echo $string; ?> |
ソースコードで見ると、"\n" の改行コードが削除され、1行で表示されます。
第1パラメータに文字列を指定し、対象とする改行コードを「|」で区切って記述することもできます。
「|」は or の意になります。
1 2 3 4 5 | <?php $string = "テキスト1\nテキスト2\nテキスト3\nテキスト4\nテキスト5\n"; $string = preg_replace('/\n|\r|\r\n/', '', $string); echo $string; ?> |
サンプルコード
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行で記述
空白と改行
空白改行
ブラウザ上で空白を表現
空白
タグ(=記事関連ワード)
日付
最終更新日:2024年08月11日