При генерации XML пробел в первой строке

  • 14 Ответов
  • 296 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн voron121

  • ****
  • 222
  • [+]1 / [-]0
  • Метод тыка и мата помогает в кодинге
    • Просмотр профиля
Доброго времени суток . Ghie помощи. Задача у меня сл : я генерирую карту сайта для самописного компонента (не получилось как то сдружить его с x-map). Ниже привожу код который должен генерировать XML страницу. При выполнении кода у меня в начале строки пробел что приводит к ошибке. Подскажите что это может быть - где зарыться мог баг. Смотрел в смежный файлах компонента - там лишних пробелов нет.

Код: (php) [Выделить]
public static function sitemap() {
header('Content-type: text/xml; charset=utf-8');
// запрос в БД
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__zaim');
$query->where(' published  = 1 ');
$query->order('`id` DESC');
$db->setQuery($query, 100);
$list = $db->loadObjectList();
$map = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$map .= '<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';
foreach ($list as $key => $value) {
$map .= '<url>';
$map .= '<loc>https://zajm24online.ru/item/mfo_'.$value->id.'.html</loc>';
$map .= '<lastmod>2017-04-12T14:41:54Z</lastmod>';
$map .= '<changefreq>weekly</changefreq>';
$map .= '<priority>0.5</priority>';
$map .= '</url>';
}
$map .='</urlset>';
$map .='</xml>';
print($map);
die();


*

Оффлайн fsv

Пример.
Спойлер
[свернуть]
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения

*

Оффлайн dmitry_stas

файл сохранен как utf8 без BOM?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн voron121

  • ****
  • 222
  • [+]1 / [-]0
  • Метод тыка и мата помогает в кодинге
    • Просмотр профиля
файл сохранен как utf8 без BOM?

да

*

Оффлайн dmitry_stas

значит вероятно где то раньше вывод есть. но тогда непонятно как у вас заголовки выставляются без ошибок. включите полный показ ошибок php, заголовок измените на text/html - что выведет?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн voron121

  • ****
  • 222
  • [+]1 / [-]0
  • Метод тыка и мата помогает в кодинге
    • Просмотр профиля
значит вероятно где то раньше вывод есть. но тогда непонятно как у вас заголовки выставляются без ошибок. включите полный показ ошибок php, заголовок измените на text/html - что выведет?

вот это

Код: (html4strict) [Выделить]


<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"><url><loc>https://zajm24online.ru/item/mfo_15.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_14.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_13.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_12.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_11.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_10.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_9.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_8.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_7.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_6.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_5.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_4.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_3.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_2.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_1.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url></urlset></xml>

при этом пробел в начале все равно есть.

*

Оффлайн voron121

  • ****
  • 222
  • [+]1 / [-]0
  • Метод тыка и мата помогает в кодинге
    • Просмотр профиля
как оказалось пробел в начале строки формируется не зависимо от карты сайта. Однако в самом шаблоне никаких пробелов  нет. Плагины проклацал - то же не помогло (

*

Оффлайн robert

Как вызывается страница карты сайта?
как оказалось пробел в начале строки формируется не зависимо от карты сайта.
Почему вы так решили?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Оффлайн voron121

  • ****
  • 222
  • [+]1 / [-]0
  • Метод тыка и мата помогает в кодинге
    • Просмотр профиля
Как вызывается страница карты сайта?Почему вы так решили?
страница карты сайта вызывается обращением к методу в контроллере компонента. Отдельный вид не используется.

А решил я так потому что не на странице карты сайта, как оказалось, так же есть пробел в начале

*

Оффлайн dmitry_stas

99% utf8 с BOM. ну если конечно этот пробел вы не выводите сами.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн voron121

  • ****
  • 222
  • [+]1 / [-]0
  • Метод тыка и мата помогает в кодинге
    • Просмотр профиля
99% utf8 с BOM. ну если конечно этот пробел вы не выводите сами.

Самне вывожу, думаю может все таки где то какой то кусочек кода выводит. В общем пока решил тем что сохраняю карту в фаил на хосте, но все равно остается вопрос с тем пробелом и как тогда отследить что именно выводит его

*

Оффлайн dmitry_stas

Цитировать
Самне вывожу, думаю может все таки где то какой то кусочек кода выводит
ну я это и имею в виду, понятно что не специально вы выводите. но я все таки склоняюсь к BOM. или может быть в каком то файле вначале перед открытием <?php есть пробел

Цитировать
остается вопрос с тем пробелом и как тогда отследить что именно выводит его
пройтись по всем файлам по цепочке, которые участвуют в выводе, и проверить каждый
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн voron121

  • ****
  • 222
  • [+]1 / [-]0
  • Метод тыка и мата помогает в кодинге
    • Просмотр профиля
ну я это и имею в виду, понятно что не специально вы выводите. но я все таки склоняюсь к BOM. или может быть в каком то файле вначале перед открытием <?php есть пробел
пройтись по всем файлам по цепочке, которые участвуют в выводе, и проверить каждый

в этом то и трабла : я уже прошелся - ни пробелов ни BOM символов. Если перейти на главную и после открыть инспектор кода то перед доктайп будет пустая строка -сл. где перед выводом шаблона чо то отрабатывает но что : там 100500 файлов которые могут косячить в перспективе. :(

Плохо что нет метода своего рода пре-рендера страницы. Типа убирать косяки если они есть

Цитировать
Плохо что нет метода своего рода пре-рендера страницы. Типа убирать косяки если они есть
Вообще-то есть, но так не надо делать -- костыль получится. Необходимо устранить причину болезни, а не её симптомы.
Ставь лайк, если согласен, и делай репост!

  => мои публикации
    => мои работы
      => спектр моих услуг

*

Оффлайн robert

страница карты сайта вызывается обращением к методу в контроллере компонента. Отдельный вид не используется.
Покажите код.
Пробел может быть не только перед открывающим тэгом <?php, но и после закрывающего тэга ?> (вообще не нужно ставить тэг ?>, если код несмешанный). Ну и как dmitry_stas писал, чаще всего виновата BOM.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.