3

私はPHPに非常に慣れていないので、ここで明らかな何かが欠けていることを知っています-ヒアドキュメント関数は書式設定、改行などを保持するはずだと思っていましたが、テストするたびに、解析中に書式設定がありません. PHP.net や W3schools などのソースからのコピー アンド ペーストを含むさまざまなスクリプトを試してみましたが、スクリプトに問題がないことはわかっています。これに対する答えをグーグルで検索することはできません - おそらくあまりにも明白なので?? (ところで、MAMPでテストしています)。ありがとう。

4

4 に答える 4

4

HEREDOC は関数ではなく、文字列区切り文字を指定する方法であり、ヒアドキュメント内で引用符をエスケープする必要がありません (優れたテキスト エディターは、ヒアドキュメント名に基づいて内容を構文で強調表示するため、この方法が気に入っています)。

HEREDOCすべての空白、改行などを保持します。おそらくブラウザで結果を見ていると思います。ブラウザーは通常、含まれるすべての空白、改行、スペース、およびタブを 1 つのスペースに切り詰めます。コマンド ライン、テキスト メール、またはテキスト ファイルで確認してみてください。

于 2011-05-19T12:29:56.970 に答える
3

設定したものと同じ文字列が生成されます。

ただし、ブラウザーは複数の空白を 1 つのスペース文字に凝縮してレンダリングします。これは仕様によるものです。

スペースを保持するには、pre要素 (デフォルトのブラウザー スタイルシートを想定) またはwhite-space: preCSS プロパティを使用できます。

<div style="white-space: pre">
<?php echo <<<A
some text
    preserved
        just
    how
 you want it.
A; ?>
</div>

jsFiddle .

于 2011-05-19T12:30:50.887 に答える
3

「MAMPでテストする」と言ったので、Webブラウザを使用してコンテンツを表示すると思います。Webブラウザ自体が不要な空白を削除するため、これは少し間違ったアプローチです。ブラウザで表示するページのソースを見ると、「実際の」コンテンツが表示されます。

于 2011-05-19T12:31:20.410 に答える
0

それはしますが、それが出力するものだけです。

HTML を出力する場合、その HTML は、空白を処理するための通常の規則を使用してブラウザーによって解釈されます。

于 2011-05-19T12:30:57.940 に答える