Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2010, 17:59   #1
borinets
 
Регистрация: 26.12.2010
Сообщений: 5
Вопрос Пробелы между блоками, подгружаемыми ф-цией include.

Здравствуйте!
Есть такой сайт: satind[dot]com[dot]ua
(ну это я осваиваю php и mysql так сказать).
Вот здесь можно посмотреть css: /templates/style.css

Есть три блока: header, middle, footer.
Все они подгружаются с разных файлов: header.tpl, main.tpl, footer.tpl.
Между ними образовываются какие-то непонятные отступы.
Когда переношу, к примеру содержимое футера в main.tpl - пробел пропадает. Значит пробел точно зависит от include.
Между функциями include тоже нет никаких лишних символов:
<?
include('templates/header.tpl');
include('templates/main.tpl');
include('templates/footer.tpl');
?>
Проверил уже в нескольких браузерах - то же самое.
В чем же дело?
borinets вне форума Ответить с цитированием
Старый 26.12.2010, 19:41   #2
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Ну не используй include. Сделай так
Код:
function use($template)
{
   $array = file($template);
   for($i=0;$i<count($array);$i++)
   {
        $array[$i]=trim($array[$i]);
        echo $array[$i];
    }
}
Ну и потом так
Код:
uses("templates/header.tpl");
uses("templates/main.tpl");
uses("templates/footer.tpl");
Конечно функция не совершенна, но все же можно и самому доделать.
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 27.12.2010, 02:31   #3
borinets
 
Регистрация: 26.12.2010
Сообщений: 5
По умолчанию

TranceSmile, ну что у вас тут на форуме все легких путей ищут?
Один вообще предложил отрицательный отступ использовать. Тут функцию для фикса написали
Но, Я ДОКОПАЛСЯ ДО ПРАВДЫ!
Короче, сайт у меня в кодировке utf-8. А для определения формата представления Юникода в текстовом файле используется приём, по которому в начале текста записывается символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. byte order mark, BOM).
Эта метка должна записываться вначале документа, но из-за влючения в основной документ других ф-цией include (у каждого из которых кодировка прописывается отдельно) этот "паскудник" вставился трижды, образовав два непонятных пробела.

Убрал пометку BOM при указании кодировки и все стало на свои места))
borinets вне форума Ответить с цитированием
Старый 22.02.2011, 14:06   #4
vencendor
Новичок
Джуниор
 
Регистрация: 24.07.2009
Сообщений: 2
По умолчанию Спасибо.

У меня такая же проблема была. Она проявлялась только в IE, но все ровно портила жизнь. Долго мучился в поисках под разными кодировками попробовал и выводить и сохранять. И только здесь нашел исчерпывающий ответ.
vencendor вне форума Ответить с цитированием
Старый 21.03.2013, 21:11   #5
Lisboaimagelab
Новичок
Джуниор
 
Регистрация: 21.03.2013
Сообщений: 1
По умолчанию

Уважаемый borinets, дай тебе здоровья, и успехов! Ты реально спас мой ноут от, казалось, неминуемого столкновения со стеной.
Спасибо. Очень помог.
Lisboaimagelab вне форума Ответить с цитированием
Старый 21.03.2013, 21:31   #6
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

1. Юзать CSS для страницы которая использует эти скрипты религия не позволяет?
2. Не используй include(рано или поздно такие сайты хорошо ломают благодаря этой функции), юзай, лучше, require-once.

Последний раз редактировалось vasek123; 21.03.2013 в 21:53.
vasek123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу delphi MASIK Общие вопросы Delphi 7 22.12.2010 18:23
Проблема с блоками Vendetta-V HTML и CSS 1 22.09.2010 20:44
"Пробелы" между ячейками после копирования. Dezmont777 Microsoft Office Excel 1 23.07.2010 06:16
удалить лишние пробелы со строки так чтобы между словами осталось по одному пробелу java llRom4ikll Общие вопросы по Java, Java SE, Kotlin 2 12.04.2010 19:35
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу c++ DimaG Общие вопросы C/C++ 1 01.11.2007 21:50