支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • コピペだけで試せる! PHPの改行方

はじめに

PHPにおける改行方法の1つ、PHP_EOLの使い方を紹介します。記事内では、コピー&ペーストで簡単に試すことができるように実際の使用例も含めて紹介します。また、次のような内容も理解できるような構成となっています。

  • PHP_EOLとその他の改行方法との違い
  • 改行方法を試しても改行されていない理由
  • 改行方法を使用した上で、ブラウザ上でも改行する方法
  • 改行の削除方法

PHPにおける改行

PHPの改行方法は、C言語やPythonなどと同様に[\n(環境によっては「¥n」)]があります。しかし。次のように、改行コードはOSによって異なります。ちなみに下記のCRLFとは、CR(キャリッジリターン)が「カーソルを行の先頭に移動させる」、LF(ラインフィード)が「次の下の行に移動させる」を意味する改行コードです。

  • Windows - \r\n(CRLF)
  • Linux/Unix系、MacOSなど - \n(LF)

これに対して、PHP_EOLはPHPの定義済み定数であり、OSに応じて自動的に改行文字を設定してくれます。つまり、OSに関係なく、改行することができる定数です。

以下では、次のサンプルコードを使用してPHP_EOLの使い方を紹介します。

ただし、冗長性を避けるため、これ以降のサンプルコードと出力されるソースコードでは、<body></body>までを示しています。そのため実際に試される方は、このサンプルコードをPHPファイルにコピー&ペーストして、これ以降のコードでは自身のPHPファイルの<body></body>のみを置き換えることで、試すことができます。

<!DOCTYPE html>
<html lang="ja">
<head>
   <meta charset="UTF-8">
   <title>sample</title>
</head>
<body>
   <?php
      echo 'ABCD';
      echo 'EFGH';
   ?>
</body>
</html>

上記のサンプルコードによる出力結果は、以下のとおりです。ちなみにソースコード上とは、Chromeの場合、ブラウザ上で[右クリック]→[ページのソースを表示(V)]によって表示されます。

ソースコード上
<!DOCTYPE html>
<html lang="ja">
<head>
   <meta charset="UTF-8">
   <title>sample</title>
</head>
<body>
   ABCDEFGH</body>
</html>
ブラウザ上
ABCDEFGH

PHP_EOLの基本的な使い方

以下に示すサンプルコードのように、PHP_EOLの使い方は、その他の改行文字と同じように簡単です。

<body>
   <?php
      echo 'ABCD';
      echo PHP_EOL;
      echo 'EFGH';
   ?>
</body>

上記のサンプルコードによる出力結果は、以下のとおりです。

ソースコード上
<body>
   ABCD
EFGH</body>
ブラウザ上
ABCD EFGH

上記に示すように、ソースコード上は改行され、ブラウザ上では「ABCD」と「EFGH」の間に半角スペースが入っています。ブラウザ上においても改行したものを出力する方法は、後述します。

連結によるPHP_EOLの使い方

PHP_EOLでは、その他の文字列の連結と同様に[.(ドット)]を使用して、改行することもできます。

<body>
   <?php
      echo 'AB'.PHP_EOL.'CD'.PHP_EOL;
      echo 'EF'.PHP_EOL.'GH';
   ?>
</body>

上記のサンプルコードによる出力結果は、以下のとおりです。

ソースコード上
<body>
   AB
CD
EF
GH</body>
ブラウザ上
AB CD EF GH

しかし、これまでも触れてきましたが、ソースコード上では改行できていますが、ブラウザ上では半角スペースが入るだけです。ブラウザ上も同様に、改行したものを出力するには次の関数を使用します。

nl2br() によるブラウザ上の改行

nl2br() は、改行文字の前にHTMLの改行タグ<br />を自動的に挿入してくれる関数です。その使用例を以下に示します。

<body>
   <?php
      $str = 'EF'.PHP_EOL.'GH';
      echo nl2br('AB'.PHP_EOL.'CD'.PHP_EOL);
      echo nl2br($str);
   ?>
</body>

上記のサンプルコードによる出力結果は、以下のとおりです。

ソースコード上
<body>
   AB<br />
CD<br />
EF<br />
GH</body>
ブラウザ上
AB
CD
EF
GH

改行の削除方法

最後にPHP_EOLのまとめとして、改行の削除方法からPHP_EOLの機能を紹介します。

改行文字を削除するには、str_replace()を使用します。この関数を使用すると、検索文字列に一致したすべての文字列を置換することができます。書式は以下のとおりです。

str_replace ( $search, $replace, $subject);

この引数は以下のように使用します。

$subjectに含まれる$searchという文字列を$replaceという文字列に置換する

これを使用すると、PHP_EOLを[’’(文字列なし)]に置換できます。つまり、PHP_EOLによる改行を削除できます。

<body>
   <?php
      $str = 'ABCD'.PHP_EOL.'EFGH';
      echo $str;

      echo nl2br(PHP_EOL); //ブラウザ上で確認しやすいように改行を設けているだけです。
     
      $str= str_replace(PHP_EOL,'',$str); //置換
      echo $str;
   ?>
</body>

上記のサンプルコードの出力結果は、以下の通りです。

ソースコード上
<body>
   ABCD
EFGH<br />
ABCDEFGH</body>
ブラウザ上
ABCD EFGH
ABCDEFGH

ブラウザ上の出力結果も半角スペースがなくなっているため、PHP_EOLによる改行がなくなっていることが分かります。

では、次のサンプルコードはどうでしょうか。

※注意点として、下記のサンプルコードでは、文字列を["(ダブルクォーテーション)]で囲っています。['(シングルクォーテーション)]の場合、OSに依存する改行文字は機能しません。

<body>
   <?php
      $str="ABCD\r\nEFGH"; //OSに依存する改行文字
      echo $str;

      echo nl2br(PHP_EOL); 

      $str= str_replace(PHP_EOL,'',$str); 
      echo $str;
   ?>
</body>

Windows環境の場合、このサンプルコードと1つ前のサンプルコードの出力結果は同じです。この理由は、前半で説明したように、PHP_EOLが直接改行を行うわけではなく、OSに対応した改行文字に自動で設定してくれる定数だからです。

次のサンプルコードを実行すると、より分かりやすいです。

<body>
   <?php
      switch(PHP_EOL){
         case "\r\n": 
            echo "PHP_EOLは\\r\\nに設定されました。";
         break;
         case "\n":
            echo "PHP_EOLは\\nに設定されました。";
         break;
      }
   ?>
</body>

上記のコードを実行すると、OSによって異なる結果が出力されます。Windows環境の場合、以下に示すようにPHP_EOLが[\r\n]に設定された結果を得ます。

ソースコード上
<body>
   PHP_EOLは\r\nに設定されました。</body>

まとめ

本記事では、PHP_EOLの使い方について、実際に試しながら理解できるようにサンプルコードなどと合わせて紹介しました。PHPに限らず、プログラミングの学習では、調べるだけでなく実際に試すという方法が効率的です。本記事がそのお役に立てれば幸いです。