フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【PHP】\nでソースを改行が出来ない時の原因と解決方法

PHP
シングルコーテーション
ソース
ダブルコーテーション
出来ない
改行

こんにちは、岐阜・名古屋を拠点に全国各地からご依頼いただくWEBサイトを制作しているフリーランスエンジニアの寺井です。

PHPでコードを出力した際、見やすくするため\nでソースを改行することがよくあります。
しかし、ある時\nを使っているのに改行されず、\nが直接出力されてしまうということがありました。
これについて調べてみるとあることが原因で\nが直接出力されていると判明しました。

注意点として、ブログ内で一部は円マーク、一部はバックスラッシュになっていますが、どちらも同じです。利用する環境によって表示されるマークが変わってしまいます。

\nでソースが改行されない

まずは以下のPHPコードを見てみましょう。

<?php
    echo '<p>あいうえお</p>\n';
    echo '<p>かきくけこ</p>';
?>

\nがソース内で改行するための改行コードです。

これを実際にブラウザで出力し、そのソースを確認してみると以下のようになっていました。

ブラウザでは。。。

改行コードの\nが文字として出力されてしまっています。

そして、そのソースは。。。

改行コードの\nが文字として出力され、ソースは一行になってしまっています。

原因と解決方法

\nを正しく、改行コードとして認識させるには「ダブルコーテーション("")」を使うことです。

先ほどの例ではecho '●●●';、このように「シングルコーテーション('')」で出力したい内容を囲っていました。

それをecho "●●●";のように、「ダブルコーテーション(””)」に変えるだけでこの問題は解決します。

<?php
    echo "<p>あいうえお</p>\n";
    echo "<p>かきくけこ</p>";
?>

これを実際にブラウザで出力し、そのソースを確認してみると。。。

ブラウザでは。。。

改行コードの\nが消えていますね。

そして、そのソースは。。。

改行コードの\nが消え、\nの部分でソースが正しく改行されるようになりました。

まとめ

いかがでしたか?
「シングルコーテーション('')」と「ダブルコーテーション("")」は同じように見えて、ところどころで仕様が異なるようです。
たったこれだけのことで、悩んでしまいました。
これからはこの二つを適切に使い分けていきたいと思った出来事でした。