Ticket #19138

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

Date d'ouverture: 2009-10-12 20:28 Dernière mise à jour: 2009-11-02 19:03

Rapporteur:
Propriétaire:
(Aucun)
Type:
État:
Atteints
Composant:
(Aucun)
Priorité:
3
Sévérité:
3
Résolution:
Won't Fix
Fichier:
Aucun

Détails

制御構造の直前や直後で改行が復元されないことがある。 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
Commentaire

自分が遭遇していた事象は 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
  • Résolution Update from Aucun to Won't Fix
  • État Update from Ouvert to Atteints
  • Ticket Close date is changed to 2009-11-02 19:03
Commentaire

結論、対処しない。

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

Attachment File List

No attachments

Modifier

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