任务单 #19138

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

开放日期: 2009-10-12 20:28 最后更新: 2009-11-02 19:03

报告人:
属主:
(无)
类型:
状态:
关闭
组件:
(无)
里程碑:
优先:
3
严重性:
3
处理结果:
Won't Fix
文件:

Details

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

任务单历史 (3/3 Histories)

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

自分が遭遇していた事象は 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
  • 处理结果 Update from to Won't Fix
  • 状态 Update from 开启 to 关闭
  • Ticket Close date is changed to 2009-11-02 19:03
评论

結論、対処しない。

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

Attachment File List

No attachments

编辑

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