Tíquete #19138

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

: 2009-10-12 20:28 Última Atualização: 2009-11-02 19:03

Relator:
Dono:
(Nenhum)
Tipo:
Estado:
Fechado
Componente:
(Nenhum)
Marcos:
Prioridade:
3
Gravidade:
3
Resolução:
Won't Fix
Arquivo:
Nenhum

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
Comentário

自分が遭遇していた事象は 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
  • Resolução Update from Nenhum to Won't Fix
  • Estado Update from Aberto to Fechado
  • Ticket Close date is changed to 2009-11-02 19:03
Comentário

結論、対処しない。

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

Attachment File List

No attachments

Editar

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