文字化けに悩んだことはありませんか?PHP_EOLはPHPで用意用意されている定義済みの定数です。PHP_EOLを使えばプログラマーがOSの違いを意識しなくても、改行コードを入れることができるため便利です。その他の改行方法と併せて説明しています
PHPの定義済み定数とは
PHPにはコード中に定義をしなくてもすぐに使える定数が用意されています。これが「定義済み定数」です。
定義済み定数の多くは、PHPを実行している環境を定義しており、プログラマーがPHPを実行する環境の違いを意識せずプログラミングに集中できる様に用意されています。
PHPにどの様な定義済み定数が用意されているかは、PHPの公式サイトで定数一覧としてまとめられています。
PHP_eolでできること
PHPの定義済み定数の1つに「PHP_eol」があります。PHP_eolを使用することで、改行コードを画面やファイルに出力することができます。
PHP_eolの”PHP_”は定義済み定数でよく使われている接頭辞で、”eol”はEnd Of Lineの頭文字です。PHP_eolという定義済み定数は、文字通り「改行」を表しています。
引き続き、PHP_eolで何ができるのかを説明していきます。
OSを意識しないで済む
ひとことで「改行」と言っても、改行に使われている文字コードはOSによって異なります。改行に使われる文字コードは、CRやLF、CR+LFの3種類あります。16進数で表現すると、CRが0x0D、LFが0x0A、CR+LFが0x0D0x0Aです。
代表的なOSで採用されている改行コードを下表にまとめます。
OS | 改行コード |
---|---|
Windows | CR + LF |
Linux | LF |
Unix | LF |
Mac OS X | LF |
Mac 0S 9 以前 | CR |
PHP_eolには、PHPが実行されたタイミングでOSに応じた改行コードが設定されます。PHP_eolの値は、WindowsならCR+LF、LinuxならLF、Mac OS XならLFが改行コードとなります。
プログラマーはPHP_eolを使うことで、PHPを実行するOSが何であるかを意識しなくても、OSに応じた改行コードを使ってプログラミングをることができます。
PHP_eolの使い方
PHP_eolは、PHP 5.0.2から実装された定数です。PHP 5.0.2 以降であれば、PHPで既に定義されているので、何も準備しないで使うことができます。
PHP_eolは文字列の定数ですので使い方も文字列と同じです。変数に代入したり、他の文字列と結合したり、HTMLやCSVなどのファイルに出力したり、コンソールに出力したりと、文字列と全く同じ使い方ができます。
PHP_eolの書き方
PHP_eolを使うには、ソースコード中で改行を置きたい箇所にPHP_eol と書きます。
定数を定義して使ったことがあれば、定義した後の定数を使う時と同じ書き方です。変数を使ったことがあれば、値を設定した変数を使う時と同じ書き方です。「定義しないで使える定数」または、「定義しないで使える読み取り専用の変数」と考えて問題ありません。
PHP_eolを使ったサンプルコード
PHP_eolを使って、文字列”1行目のテキスト”と”2行目のテキスト”という2つのテキストをを2行で出力するサンプルコードを紹介します。
<?php
echo '1行目のテキスト'.PHP_EOL.'2行目のテキスト';
?>
このサンプルコードを実行すると以下の出力が得られます。
1行目のテキスト
2行目のテキスト
PHP_eolが改行となって出力されていることが分かります。
その他の改行方法
PHPで改行する方法としては、PHPの定義済み定数「PHP_eol」を使う以外にもいくつか方法があります。PHP_eol以外で改行する方法について説明してきます。
ひと言で改行と言っても、PHPではウェブブラウザで改行する場合と、ソースコード上で改行する場合とで考え方が異なるため、注意が必要です。
ウェブブラウザ上で改行する
PHPの用途としてウェブブラウザ上に出力するケースが多くありますが、PHP_eolと書いただけではウェブブラウザ上で改行させることはできません。ウェブブラウザ上で改行をするには、改行したい場所に <br /> と記述する必要があります。
これはPHPの書き方ではなくHTMLの書き方です。ウェブブラウザ上で改行するには、PHPの仕様を意識したプログラミングが必要です。
<br />を使ってブラウザ上で改行するサンプルコード
PHP_eolではなく、<br />で改行するサンプルコードです。
<?php
echo "1行目のテキスト<br />2行目のテキスト";
?>
このサンプルコードを実行するとウェブブラウザ上では以下の出力が得られます。<br />の部分が改行となって出力されていることが分かります。
1行目のテキスト
2行目のテキスト
<pre>を使ってブラウザ上で改行するサンプルコード
<pre>タグで囲った範囲内であれば改行もそのまま出力されるので、PHP_eolを使って改行させることもできます。この方法はPHP_EOLも使用しますが、ブラウザ上で改行する複合パターンとして紹介します。
echo '<pre>';
echo '1行目のテキスト'.PHP_EOL.'2行目のテキスト';
echo '</pre>';
ソースコード上で改行する
ソースコード上で改行してもウェブブラウザ上では改行されませんが、ファイルに改行を出力するなどの用途では、ソースコード上での改行がとても重要になります。
ソースコード上で改行をする方法は、PHP_eolを使う他にも2つの方法があります。
1つは、PHPの定義済み定数を使う代わりにプログラマー自身で定義した定数を使う方法です。2つはヒアドキュメントを使用する方法です。
プログラマー自身で定義した定数を使って改行する方法
プログラマー自身で定数の定義が必要となりますが、使い方自体はPHP_eolと同じです。
定義済み定数と違い、プログラマー自身でOSの違いを意識して設定する必要があります。定数の値には、CR+LFなら”¥r¥n”、LFなら”¥n”、CRなら”¥r”を定義します。
次の例は、MY_EOLという名前でLF改行を定義するサンプルコードです。
define('MY_EOL', "¥n");
echo MY_EOL;
ヒアドキュメントを使って改行する方法
PHPには、PHP_eolの他にもヒアドキュメントという書き方があります。次の例は、ヒアドキュメントを使って改行を出力するサンプルコードです。
echo <<<EXAMPLE
1行目のテキスト
2行目のテキスト
EXAMPLE;
<<<EXAMPLE から EXAMPLE;で囲まれた部分に書かれた文字がそのままechoで出力されます。EXAMPLEの部分は、中に書くテキストの内容によってプログラマーが自由に決めることができます。
ヒアドキュメント中に書いた改行がそのままソースコード上に出力されます。
プログラマー自身で改行を意識する必要がある
ソースコード上で改行する場合、PHP_eolを使用しない方法では、プログラマー自身が改行コードを意識しなければなりません。
例えば、Windows環境で使うテキストファイルなのにLinuxで使うLFで改行してしまうと、改行が無い1行のテキストになってしまう場合があるので注意が必要です。
PHPのバージョンにも注意
PHP_eolはPHP 5.0.2から定義された定数ですので、PHP 5.0.2より前のバージョンを使っている場合はPHP_eolを使うことは出来ません。プログラマー自身で定数定義して使う必要があります。
まとめ
PHP5.0.3以上であれば、PHP_eolを使うことができます。PHP_eolを使えば、プログラマーがOSの違いを意識しなくても、PHPがOSに応じて改行コードを設定してくれるので便利です。
ブラウザ上での改行やソースコード上での改行の違いに注意しながら、PHP_eolを活用していきましょう。