Lv1プログラマの誰得メモ

総務女子の、開発とか趣味自学に関係することの、覚書

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

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

<?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のことだとか、色々勉強になったから良かった、かな?