php include вызывает нежелательные символы новой строки - PullRequest
5 голосов
/ 10 августа 2011

(PHP 5.3.6)

У меня есть php-файл, который содержит просто этот текст - нигде нет тегов php, нет завершающего символа новой строки или лишних пробелов:

<div style="border:1px solid green">abc</div>

Теперь добавим это из другого php-файла следующим образом (опять же, без каких-либо посторонних пробелов):

<div style="border:1px solid red"><?php include "abc.php" ?></div>
<br />
<div style="border:1px solid red"><div style="border:1px solid green">abc</div></div>

Я получаю результат ниже.

Обратите внимание, что второй метод просто использует включенный контент напрямую. Оба они должны быть похожи на нижний, но, как вы можете видеть, включение приводит к добавлению некоторого странного вида новой строки перед содержимым включаемого файла. Я говорю «странно», потому что когда я проверяю выводимый источник (через источник просмотра Chrome), там ничего не видно:

enter image description here

Когда этот раздел страницы отображается в инспекторе элементов Chrome, кажется, что-то там есть, но что именно, я не могу сказать:

enter image description here

Кажется, что это просто пустая строка, но почему пустая строка вызывает переводы строки и почему она будет там в первую очередь, остается загадкой. Добавление точки с запятой в конец оператора include не имеет значения. Мне пришло в голову, что это может быть нулевой байт или 13 (CR), но это все равно не должно вызывать разрыв строки HTML.

Кто-нибудь знает, как мне избавиться от этого нежелательного перевода строки?

Ответы [ 3 ]

14 голосов
/ 10 августа 2011

Проверьте кодировку включенного abc.php - имеет ли он метку порядка байтов (BOM)? Если это так, удалите его (хорошие редакторы кода позволяют изменить кодировку файла в диалоговом окне «Сохранить»), что может быть причиной этого.

0 голосов
/ 12 декабря 2013

Я был в той же проблеме.Я нашел проблему в редакторе.отредактируйте и сохраните включенный файл в блокноте или текстовом редактореВы увидите изменения.

0 голосов
/ 10 августа 2011

Полагаться на инспектор Chrome для проверки необработанного вывода не очень хорошая идея, так как дерево отформатировано. Используйте show source чуть лучше.

Скорее всего, это не связано с include(). Первым делом нужно открыть включенный файл в шестнадцатеричном редакторе и проверить, действительно ли он действительно пуст. Как указал Дженс Роланд, он может содержать, например, BOM , который будет скрыт большинством текстовых редакторов.

Вы также можете сгенерировать необработанный файл abc.php с этим кодом и проверить свой код на его соответствие:

file_put_contents('abc.php', 'abc');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...