Ticket #19138

改行が復元されないことがある

Open Date: 2009-10-12 20:28 Last Update: 2009-11-02 19:03

Reporter:
Owner:
(None)
Type:
Status:
Closed
Component:
(None)
MileStone:
Priority:
3
Severity:
3
Resolution:
Won't Fix
File:
None

Details

制御構造の直前や直後で改行が復元されないことがある。 HTML のテンプレートとしては問題ないが、メールのテンプレートや、バッチの出力結果、ソースコードの雛形などで意図した結果にならず困るコトがある。

Ticket History (3/3 Histories)

2009-10-12 20:28 Updated by: fujioka
  • New Ticket "改行が復元されないことがある" created
2009-11-02 18:25 Updated by: fujioka
Comment

自分が遭遇していた事象は PHP の仕様のようだ。コンパイルキャッシュは期待通りの出力をしている。

http://php.benscom.com/manual/ja/faq.using.php#faq.using.newlines

以下、引用

改行されないのですが?

<pre>
<?php echo "これは1行目"; ?>
<?php echo "この行は改行に続いて出力されるはず"; ?>
</pre>

PHPでは、"?>"か"?>\n"(\nは改行を表します)をPHPのコードブロックの終端と見なします。このため、コードブロック終端の改行記号は省略され、表示される文は1行になります。つまり、改行をさせるためには、PHPのコードブロックの終端の後にもう1つ改行を挿入する必要があるということです。

なぜPHPはこのようなことをするのでしょうか?なぜならHTMLを出力する場合にはこの方が都合のよいことが多いからです。もしとても長い1行を出力しなければならない場合に、改行が解釈されてしまうとしたらどうでしょう。ソースコードの1行もとても読めないくらい長いものになってしまいます。

まー、言わんとしてることはわかる、ような気もする。が、釈然としない気持ちも。

さて、どうしたものか。

2009-11-02 19:03 Updated by: fujioka
  • Resolution Update from None to Won't Fix
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2009-11-02 19:03
Comment

結論、対処しない。

改行直前の <{$hoge}> で改行を復元したい場合は $hoge = "$foo¥n" とするか、<{add_newline($hoge)}> などの helper メソッドを用意して対応、してくだされ。

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login