LoginSignup
2
1

More than 3 years have passed since last update.

開始タグの前に改行を入れるべからず

Posted at

PHP で作られたバッチを実行すると、なぜか、最初に空白行が出力されました。

starttag.php
<?php
require_once 'starttag_called.php';
echo "abc\n";
starttag_called.php

<?php
echo "called\n";
          ← 空白行
called
abc

原因

starttag_called.php で、 <?php の前に空白行があることが原因です。

公式マニュアル にも書いてあるとおりです。

つまり、開始タグと終了タグで囲まれている 箇所以外のすべての部分は、PHP パーサに無視されます。

なので、 <?php の前に文字が書いてあっても、普通に出力されます。

starttag_called.php
xyz
<?php
echo "called\n";
xyz      ← 空白行
called
abc

感想

もともと HTML にコードを埋め込めることが PHP のウリだったのだから、考えてみれば当たり前の動きです。
ただ、「どこで空白行を出力しているんだ?」と、がんばって PHP のコードを読んでもわからず、デバッグしてようやく気づいたという・・・。 require_once で読み込んでいる先のコードが原因だったのも厄介でした。

ということで、本日の教訓。
開始タグの前に余計な改行を入れるな

「それがなんだってんだよ。とんでもないクソ記事だな!」
「ネタがなさすぎて、この程度の記事しか書けなかったのだ。自分的にはがんばったつもりだが、これが今の実力というものなのだろう」

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1