Lv1プログラマの誰得メモ

総務女子の趣味とか勉強に関係することのメモ

\nで改行できない!【はずがない!】

2010/12/5の記事【エスケープシーケンス - Lv1プログラマの誰得メモ】のサンプルを動作させてみた。
ソースは以下

<?php
 print('1行目の文章');
 print("\n");
 print('2行目の文章');
?>

ブラウザでは

 1行目の文章
 2行目の文章

何を疑うまでもなく、こう表示されると思っていた。
(※「んなわけないじゃん」と思った方はこの先読まなくてもいいですよ!)





・・・あれ?改行されてない?

「\r\n」だったかな?(^ω^;



修正修正。。。






あれれ?(・ω・;;


\"\’はちゃんと表示される
なぜ改行だけ??


文字コードUTF-8
エディタの文字コードも同じくUTF-8


じゃあ、エディタが悪いのか?
→エディタ変えても変化無し


ブラウザが悪いのか?
→ブラウザ変えても変化無し



友人からの助言
「"PHP_EOL"使ってみたら?」


ほほう!何だ、それは!!


端的に言うと、それぞれのOSに合わせた改行コードを入れてくれる定数らしい

OS改行コード改行文字
WindowsCR+LF\r\n
MacOSCR\r
UNIXLF\n
MacOS X文字コードLFなので\nでOK!



すげぇ!こんなものがあったのか!


コレで解決するね!
使ってみよう!!

<?php
 print('1行目の文章');
 print(PHP_EOL);
 print('2行目の文章');
?>

これでよし!
ブラウザで表示!!





・・・え?




使い方はあってるはずだ
なのになぜ表示されない




orz







友人「ちなみにさ、PHP_EOLの代わりに<br>・・・」
「あ!」



分かっちゃった!


私、分かっちゃったよ!


友人が言い切る前に!



そりゃブラウザで見て改行されてるわけないよね




エディタ

<html xmlns="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>

<?php
	print('1行目の文章');
	print("\n");
	print('2行目の文章');
?>

</body>
</html>


ブラウザ


ブラウザ > ソースを表示


ソースではしっかり改行されとるがな(^q^)


そりゃ、phpでhtml生成してんだもん
<br>付けなきゃ改行されてブラウザ表示されないよね



なんか、もう、こんな単純なことで2,3日も悩んでたなんて。。。
文字コードのことだとか、PHP_EOLのことだとか、色々勉強になったから良かった、かな?



【2018/06/16追記】
8年も前の記事なのに、いまだにたくさん見ていただけているようで大変嬉しいです!(見られているページ1位なのです・・・)
PHPの勉強は現在ストップしていますが、また再開したいと思っていますのでコメント残していただけると励みになります。
当時は「しょーもない勘違いだなぁ(笑」と思いながら記事にしていたのですが、少しでも皆さんのお役に立てているなら幸いです^^