Ошибка при использовании "print <<<HERE HERE;"

U
На сайте с 31.01.2011
Offline
23
2552

Здравствуйте!

Помогите пожалуйста решить мучающую меня проблему.

При использовании конструкции print<<<HERE HERE; выдается ошибка: Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in Z:\home\test1.ru\ on line 39.

Вот код:

print <<<HERE

if (!empty($_SESSION['login']) or !empty($_SESSION['id'])){
echo "Здравствуйте, <b>".$_SESSION['login']."</b> (<a href='exit.php'>выход</a>)<br><br>";
}
HERE;

39-ой проблемной строкой здесь является

if (!empty($_SESSION['login']) or !empty($_SESSION['id'])){

Заранее спасибо!

То, что мы знаем - ограничено, А то, чего мы не знаем - бесконечно...
IL
На сайте с 20.04.2007
Offline
435
#1

после первой хери пробел убрать

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
U
На сайте с 31.01.2011
Offline
23
#2
ivan-lev:
после первой хери пробел убрать

Какой именно пробел Вы имеете ввиду убрать?

IL
На сайте с 20.04.2007
Offline
435
#3

Вот этот..:

print <<<HERE <---
U
На сайте с 31.01.2011
Offline
23
#4
ivan-lev:
Вот этот..:

Хм.. У меня в этом месте пробела нет, только перенос строки.

IL
На сайте с 20.04.2007
Offline
435
#5
Ultran:
Хм.. У меня в этом месте пробела нет, только перенос строки.

Можете поспорить с PHP-интерпретатором. Доказать ему, что он не прав.

p.s. в коде из первого поста пробел точно есть. проверяется методом копипаста.

U
На сайте с 31.01.2011
Offline
23
#6

Да, в первом посте он почему-то присутствует. Но в коде у меня только перенос строки в этом месте. Странно. Как поступить? Ведь так:

print <<<HEREif (!empty($_SESSION['login']) or !empty($_SESSION['id'])){

будет неправильно же.. Наверное.

SeVlad
На сайте с 03.11.2008
Offline
1609
#7
ivan-lev:

p.s. в коде из первого поста пробел точно есть. проверяется методом копипаста.

Я скопипастил - у меня нет там пробела. Есть в конце 2 шт

Мб потому что линух?

Ultran, что-то мне подсказывает, что тебе надо юзать правильный блокнот - акелпад, нотепад++ и тд

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
siv1987
На сайте с 02.04.2009
Offline
427
#8

Не в пробеле дело. Переменные нужно экранировать (знак доллара) либо заключить в фигурные скобки если работаете с ними.

B1
На сайте с 13.12.2012
Offline
28
#9

вроде в хередок нельзя выполнять условия if/else и подобные конструкции.

Heredoc-текст ведет себя так же, как и строка в двойных кавычках, при этом их не имея. Это означает, что вам нет необходимости экранировать кавычки в heredoc, но вы по-прежнему можете использовать вышеперечисленные управляющие последовательности. Переменные обрабатываются, но с применением сложных переменных внутри heredoc нужно быть также внимательным, как и при работе со строками.
IL
На сайте с 20.04.2007
Offline
435
#10
siv1987:
Не в пробеле дело. Переменные нужно экранировать (знак доллара) либо заключить в фигурные скобки если работаете с ними.

В коде из первого поста (со звёздочками) можно не экранировать :D

bashkir102:
вроде в хередок нельзя выполнять условия if/else и подобные конструкции.

Возможно, задумка - напечатать целиком? В смысле, листинг программы.

Тогда лучше 'одинарные кавычки' использовать, иначе, правильно siv1987 написал - экранировать или {фигурными скобками пользоваться}

{$var['index']}
SeVlad:
что тебе надо юзать правильный блокнот - акелпад, нотепад++ и тд

да не.. на самом деле определиться нужно, что требуется и использовать подходящие способы.

p.s. ну и пробелы после HERE поубирать, если имеются.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий