Вопрос

Я не знаю, почему каждый раз, когда я пытаюсь включить свой заголовок, используя PHP include там есть верхний предел.Я проверил это с помощью Firebug, и там написано, что вверху есть поле со смещением 22 пикселя.Кто-нибудь сталкивается с этой проблемой?Я думаю, что это свойство CSS:Наверх:22 пикселя.Но ничто не может изменить это, даже если я напишу h1 style="top:0 пикселей;маржа-верхняя:0 пикселей;".Я думаю, что это загадка php-CSS, которая никогда не будет разгадана.

Редактировать:Единственный способ избавиться от этого смещения верхнего поля или что бы это ни было, это добавить свойства follow к H1:Наверх:0 пикселей;положение:абсолютный;

Будут ли эти свойства создавать больше проблем в будущем?

есть ли лучший способ решить эту проблему со смещением верхнего поля?

редактировать 2:Я думаю, что есть проблема с кодировкой.Существует ли конфликт между кодировкой включаемого файла (header.html) и индексным файлом?

Мой индекс выглядит следующим образом:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Untitled 1</title>
    <link rel="stylesheet" type="text/css" href="style2.css" />
</head>
<body>
    <div id="page-wrap">
    <?php include_once("header2.html"); ?>
    </div>
</body>
</html>

С помощью этого CSS:

* {
    padding: 0px;
    margin: 0px;
}

Мой header.html (тот, который включается):

<h1>Header 2</h1> 

И это результат:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Untitled 1</title>
    <link rel="stylesheet" type="text/css" href="style2.css" />
</head>
<body>
    <div id="page-wrap">
    <h1>Header 2</h1>  </div>
</body>
</html>
  • Боже, это так просто, что я действительно не знаю, откуда берется верхнее поле (во всех браузерах).
  • Это происходит только тогда, когда я использую php includes.
  • Исходный код выглядит так же, как и тогда, когда я не использую php include.
Это было полезно?

Решение

Это довольно странно, но я скопировал и вставил ваш выходной HTML-код в Notepad ++, и там был странный символ непосредственно перед h1.При вставке его в Блокнот была указана буква h в строке h1.

Следовательно, мне кажется, что у вас может быть ошибочный (или неожиданный для PHP) символ в вашем включенном HTML (или в PHP, включающем его).Мое подозрение?Ужасная спецификация UTF-8.Попробуйте изменить кодировку вашего включенного HTML-файла, чтобы исключить спецификацию (с которой у меня всегда были проблемы при работе с PHP).

Редактировать:Ага.Только что проверено с помощью шестнадцатеричного редактора.В начале вашего включенного HTML-кода есть отметка о порядке байтов.Я не знаю, какой редактор вы используете, но у вас должна быть возможность изменить настройки кодировки текста.

Видишь это для получения дополнительной информации о PHP и спецификации.

Другие советы

Вы должны опубликовать свой сгенерированный HTML, например, путем копирования того, что вы видите, когда выбираете "Просмотреть исходный код" в своем веб-браузере.Часто я видел загадочные пустые строки в сгенерированном PHP HTML, потому что PHP настроен на вывод ошибок и предупреждений.Даже если это вызвано не этим, мы можем более легко диагностировать проблему, если увидим выведенный HTML-код.

ну, не зная, что находится в вашем php include, трудно сказать, но убедитесь, что внутри него нет CSS.также убедитесь, что загружаемый вами CSS найден и загружен.я отлаживаю, изменяя цвет фона или что-то еще визуальное, чтобы вы могли быть уверены, что он загружается.

я бы поспорил на что угодно, что это не имеет ничего общего с тем, что php включает в себя сам.как упоминалось ранее, во включенном файле может быть какой-то css, который это делает, но я никогда не видел в php ничего подобного тому, что вы описываете.

я бы посмотрел на объявление doctype [временно удалите его, чтобы посмотреть, что произойдет] и удалил текущий тег объявления html и заменил его простым <html> тег [опять же, временно, для отладки]

Часто дополнительная новая строка будет находиться в конце файла PHP-скрипта, который вы добавляете после тега ?>.Это приведет к включению дополнительного символа в сгенерированный результат.Вы можете устранить эту проблему, не имея закрывающего тега ?> в самом конце вашего файла.PHP знает, что нужно "предположить", что он закрыт.

У вас есть возможность дать нам ссылку?Я только что попробовал локально пару вещей, и вы можете получить эту "нежелательную" новую строку, по-видимому, "без причины" вообще между вашим содержимым и объявлением "doctype", если есть непечатаемый символ.Попробуйте удалить все символы после ">" и посмотрите на это с помощью шестнадцатеричного редактора, чтобы убедиться в этом.Пожалуйста, предоставьте нам больше информации.

Это очень интересно, потому что я только что использовал вашу разметку и ваш css.Я также поместил это в php-файл и включил html-файл.Но здесь нет никакой разницы.Нигде.

Поэтому убедитесь, что ваш браузер способен найти css-файл с * { margin: 0; padding: 0 }

И я предлагаю вам использовать лист сброса, подобный этому - http://meyerweb.com/eric/tools/css/reset/index.html.

p.s.если у вас есть какое-то веб-пространство, разместите его в Сети и пришлите нам ссылку.

Dreamweaver сводит меня с ума своими автоматическими добавлениями спецификаций.Вот как это исправить:

http://www.adobe.com/support/documentation/en/dreamweaver/mx2004/dwusing_errata/dwusing_errata2.html

Я испытал то же самое problem...so что я сделал, чтобы исправить это, так это добавил html-комментарий к открытию в начале первого файла и html-комментарий к закрытию в начале второго файла.При этом спецификация (или что-то еще, что появляется между файлами) помещается внутри комментария, поэтому она не выводится в формате html.

Например:

#header.php
<?php ?>
<html>
<!--

#body.php
<?php ?>
-->
<body>
...

Я пытался устранить проблему с преобразованием между форматами кодировки в notepad ++, но безрезультатно.Так что это лишь временное решение, пока я не найду лучшее решение проблемы.

Я использую блокнот, и я выбрал из меню -> Encoding-> Encoding with UTF-8 без спецификации, и это сработало просто отлично.Это должно быть сделано для каждого включенного файла.Я думаю, что это решение вашей проблемы.Приятного вечера.

Я чуть не убил свой кейобард, пытаясь решить эту проблему.Тогда я попробовал Редактор PSPad, изменить явно .inc или .php Для UTF-8 и ЭТО СРАБОТАЛО !!

Однажды у меня была эта проблема, и вот способ ее исправить - это действительно проблема с кодировкой.Я потратил 10 часов, чтобы найти ее.В моей ситуации я меняю кодировку во всех файлах php (все файлы php, все файлы tpl (если у вас есть)) с UTF-8 на UTF-8 без спецификации, сохраняю ее и затем пробую.После этого вы также можете создать в .htaccess строку "AddDefaultCharset UTF-8".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top