2012-02-23 12 views
2

次のコードを使用すると、5つの別々の行が表示されます。代わりに、すべての行を1行にまとめます。タブはなく、先行スペースも空白行もありません。私が期待していたものではありません。PHP heredocフォーマットを保持していません

他のコードを見た後、プログラマーは、(
を代わりに使って)一連のものを挿入し、私が探していた結果を得ました。私はあまりにも多くを期待していますか?私は一流のスペースとタブを働かせることはできませんでした。これはセットアップの問題でしょうか?

<?php 
$author = "Alfred E Newman"; 

$out = <<<_END 
     This is a Headline 

    This is the first line. 
    This is the second. 
     - Written by $author. 
_END; 

print $out; 
// echo $out; // ... didn't format as expected either 
?> 

結果:これは見出しです。これは最初の行です。これは二番目です。 - Alfred E Newmanによって書かれています。

+0

出力が良好に見える:http://codepad.org/7Oogl3hY;) – hakre

答えて

5

HTMLに出力する場合は、printの呼び出しを<pre>タグでラップしてみてください。ブラウザでは、HTMLを表示するときにOS改行文字に注意を払わない。 BUTの場合、ページのソースコードを表示すると、そこに期待どおりの出力が表示されます。

HTMLに新しい行を表示する場合は、<br/>または<p>、または適切なCSSスタイリングメカニズムを使用する必要があります。

UPDATE

は、ああ、私は忘れてしまいました!絶えず警戒@MarkBaker(感謝)で述べたように、PHPのnl2brdocs機能が<br/>タグで改行文字を置き換えることで、あなたのためにこのような操作を処理します:

$output = nl2br($output); 
print $output; 
+3

とnl2br()関数を忘れないでください。 –

+0

@MarkBakerああ、良い点です。更新中... – rdlowrey

4

ちょうどあなたのスクリプトの先頭にheader('Content-Type: text/plain;');を追加します。

<?php 
header('Content-Type: text/plain;'); 
$author = "Alfred E Newman"; 
... 

これは、ブラウザに出力をプレーンテキスト(HTMLではない)として表示するように指示します。

関連する問題