Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Съедание перевода строки после ?> если он последний в строке

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
SOFTOLAB
Отправлено: 23 Августа, 2013 - 16:42:18
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Собственно имеется проблема с исчезновением перевода строки (\n) после закрытие php вставки если она последняя в строке.
Может быть кто то знает почему это происходит?

Пример:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $USER_ID = 15;
  3. $USER_LOGIN = "Admin";
  4. $GROUP_ID = 1;
  5. ?>
  6. Ваш user id: <?=$USER_ID?>
  7. Ваш логин: <?=$USER_LOGIN?>
  8. ID вашей группы: <?=$GROUP_ID?>


В итоге все будет слеплено в одну строку, если поставить пробел на конце каждой строки, то всё нормально.
Пример неправильного вывода:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Ваш user id: 15Ваш логин: AdminID вашей группы: 1


PS: Пишу шаблонизатор с php логикой, и данный "баг" все портит.
 
 Top
VestCoastman
Отправлено: 23 Августа, 2013 - 16:51:31
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




\n не является переносом строки html. Используйте <br>
 
 Top
SOFTOLAB
Отправлено: 23 Августа, 2013 - 16:53:39
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




VestCoastman пишет:
\n не является переносом строки html. Используйте <br>

Господи, да откуда вас столько...
Мне уже один советовал так делать, и для этого в скобках специально было указано то что пропадает, но видимо нужно жирным красным писать что <br> меня не интересует.
 
 Top
DelphinPRO
Отправлено: 23 Августа, 2013 - 16:56:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Это вполне документированное поведение php
Подробности ищите на php.net


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
SOFTOLAB
Отправлено: 23 Августа, 2013 - 17:01:43
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




DelphinPRO пишет:
Это вполне документированное поведение php
Подробности ищите на php.net


А варианты обхода на стороне php есть?
В голове кончено созрел уже план по распарсиванию шаблона на строки и проверки каждой на наличии в конце этих зловещих символов (и если есть добавлять <?php echo "\n";?>), но у ноги скулит сервер и просит этого не делать, т.к. он боится за свое здоровье Улыбка

(Отредактировано автором: 23 Августа, 2013 - 17:16:47)

 
 Top
DelphinPRO
Отправлено: 23 Августа, 2013 - 17:05:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




SOFTOLAB пишет:
PS: Пишу шаблонизатор с php логикой, и данный "баг" все портит.

а вам, собственно, какая разница на форматирование кода на выходе шаблонизатора? Он же в браузер пойдет, а браузеру пофиг.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
SOFTOLAB
Отправлено: 23 Августа, 2013 - 17:09:51
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




DelphinPRO пишет:
SOFTOLAB пишет:
PS: Пишу шаблонизатор с php логикой, и данный "баг" все портит.

а вам, собственно, какая разница на форматирование кода на выходе шаблонизатора? Он же в браузер пойдет, а браузеру пофиг.


Ну потому что он будет применяться не только для вывода html, и в некоторых случаях отсутствие перевода строки смерти подобно...

PS: Линком не поделитесь где именно написано про мою проблему на php.net?
(Добавление)
Пока решил использовать такой вот извращенный подход (функцию):

PHP:
скопировать код в буфер обмена
  1.  
  2.         $data = explode("\n", $data);
  3.         foreach($data as $key => $value)
  4.         {
  5.                 $counter++;
  6.                 if(mb_substr($value, -2, 2, "utf-8") == "?>" and $data[$counter])
  7.                 {
  8.                         $content[] = $value."<?PHP echo \"\n\";?>";
  9.                 } else {
  10.                         $content[] = $value;
  11.                 }
  12.         }
  13.         return implode("\n", $content);
  14.  


Может со временем удастся побороть этот "баг", а пока и так сойдет, благо шаблоны кешируются.
 
 Top
DelphinPRO
Отправлено: 23 Августа, 2013 - 19:21:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




SOFTOLAB пишет:
Линком не поделитесь где именно написано про мою проблему на php.net?

http://www.php.net/manual/ru/lan...n-separation.php
Цитата:
Закрывающий тег блока "поглотит" немедленно следующий за ним переход на новую строку, если таковой будет обнаружен.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
SOFTOLAB
Отправлено: 23 Августа, 2013 - 20:37:54
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




DelphinPRO пишет:
SOFTOLAB пишет:
Линком не поделитесь где именно написано про мою проблему на php.net?

http://www.php.net/manual/ru/lan...n-separation.php
Цитата:
Закрывающий тег блока "поглотит" немедленно следующий за ним переход на новую строку, если таковой будет обнаружен.


Спасибо Улыбка
Зендовцы оказывается любят подгадить...
 
 Top
DelphinPRO
Отправлено: 23 Августа, 2013 - 21:27:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Напротив, где-то я видел логическое объяснение подобному поведению, но не могу вспомнить...


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
SOFTOLAB
Отправлено: 27 Августа, 2013 - 03:42:14
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




DelphinPRO
Если бы еще вспомнили как это можно обойти более правильно, было бы здорово Улыбка
 
 Top
DelphinPRO
Отправлено: 27 Августа, 2013 - 09:21:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Вспомнил бы, если б знал... Но так как, на мой взгляд, это совершенно бессмысленно - то и знать я этого не мог, потому что не интересовался.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB