6

これはしばらく私を悩ませています。単純な PHP ファイルがあるとします。

Line 0
Line 1
<?="Line 2"?>
Line 3

このファイルを処理すると、次のようになります。

Line 0
Line 1
Line 2Line 3

改行はどこに?>行きましたか?終了タグの後に何らかの文字を配置しても、改行は取り込まれません (例: ?>.)。

この動作を制御する方法はありますか? IDE は改行の前の空白を削除するように構成されているため、終了タグの後に空白を配置するつもりはありません (そして、私はそれが好きです)。

4

3 に答える 3

5

はい、確かに:

ブロックの終了タグには、改行が存在する場合、直後に改行が含まれます。

http://php.net/manual/en/language.basic-syntax.instruction-separation.php

つまり、?>が行の最後の部分である場合、改行は PHP の終了ブロックの一部として削除されます。明示的echoに改行するか、改行を追加する必要があります。

于 2013-01-23T15:11:58.237 に答える
4

これは実際には機能です(信じられないかもしれませんが)。PHP の終了タグの直後にある場合、PHP は改行を消費します。

ブロックの終了タグには、改行が存在する場合、直後に改行が含まれます。

includeこれは、空白行で終わる PHP ファイルが、別のスクリプトから d を実行したときに、出力に改行が発生しないようにするために明確に組み込まれています。つまり、これは、当面の間、私たちが一緒に暮らさなければならない昔からの「無知を守る」機能です。

本当に改行が必要な場合は、他のオプションがあります。終了タグの後に2 つの改行を入れるだけ (2 つ目は機能します!) から、コードから改行をエコーすることまでです。

于 2013-01-23T15:12:06.790 に答える
1

<?phpおよびタグの外側では?>、PHP インタープリターは HTML モードで動作し、HTML モード内のスペーシングは、テキスト コンテンツの場合ほど問題になりません。

PHP でテキストを生成するには、プレーンな文字列を使用して、次の方法で出力を作成する必要があります。

$var = "Line 2";
$s = "Line 0\nLine 1\n$var\nLine3";

文書化されていますが、少なくともこれは厄介なことにはなりません:)

于 2013-01-23T15:11:14.283 に答える