次のコードを検討してください。
<div id="sidebar">
<?php
require_once('/components/search.php');
require_once('/components/categories.php');
?>
</div>
search.php
とcategory.php
は本質的に同じ構造です-いくつかの特定の内容を持つdivコンテナ。ここでは特別なことは何もありません。純粋なHTMLです。
<div class="component">
<!-- blah -->
</div>
ただし、require_once
(またはrequire
/include
など)を挿入すると、PHPは各要素の上に空白を追加し、Chromeの要素の検査ツールで空のテキストノードとして識別できるように押し下げます(このノードが削除されると空白は消えます)
サイドバースクリプトから不要な空白をすべて削除して(1行のコードにする)、修正されません。また、行をコンポーネントのコンテンツに置き換えるだけrequire_once
では、空白は表示されません。したがって、PHPがrequireに追加する理由がわかりません。何か案は?
アップデート
これはまだ奇妙なものであることが証明されています。require_once
私は今、それ自体が根本的な原因ではないように思われることに同意します。私はしばらくの間問題を無視することに決めました、そして私がそれをさらに取り組んだ後にそれがなくなることを望みます。残念ながら、それは残っているので、私はもう少し調査しました。ブラウザでページソースをチェックすると、問題のコードが実際に1本の長い途切れのない行として返されることを確認しますhttp://pastebin.com/dtp7QNbs-どのタグの間に空白やキャリッジリターンはありませんが、ブラウザにスペースが表示されます-要素の検査ツールで、それぞれの間の空の行として識別可能<div class="component">
これは、この問題にさらに光を当てるのに役立ちますか?