Синтаксическая ошибка PHP T_ENCAPSED_AND_WHITESPACE - PullRequest
2 голосов
/ 10 ноября 2009

Я начинаю работать с основами PHP, и у меня возникли проблемы с пониманием того, как смешивать код со строками.

Я нашел отличный и полезный стиль для печати строковых блоков, но я не знаю названия и не могу найти примеры.

код ниже вернет мне ошибку:
Ошибка разбора: синтаксическая ошибка, неожиданный T_ENCAPSED_AND_WHITESPACE, ожидаемый T_STRING или T_VARIABLE или T_NUM_STRING в /web/htdocs/food/user/index.php в строке 120

<?php   
$html_str = <<<STR
    <li><img alt="hello" src="$path_images/pencil.png"/><a title="hello" href="$path_pages/$page/action">Details</a></li>

STR;
print $html_str;
?>

Может кто-нибудь помочь мне найти, где я не прав, и как называется этот стиль синтаксиса?

спасибо v

Ответы [ 2 ]

4 голосов
/ 20 ноября 2009

Я нашел проблему!
в примере, который я разместил, он не может вернуть ошибку:

Рабочий код

<?php
$str = <<<STRING
hello! this is a working string<br/>
and i can do too many things with heredoc syntax!
STRING;

print $str;
?>

Не рабочий код

<?php
     $str = <<<STRING
     syntax error!<br/>
     syntax error!<br/>
     why?
     STRING;

     print $str;
?>

Проблема в том, что перед тегом закрытия находятся вкладки STRING; , которые считаются частью тега, поэтому тег закрытия не интерпретируется "STRING;" но "STRING ; ", поэтому он не работает.

надеюсь, что это пригодится кому-то еще.

1 голос
/ 10 ноября 2009

Имя синтаксиса: Строки HEREDOC или "здесь документы".

Но когда я запускаю ваш код на моем сервере, я не получаю ошибок токена, которые вы делаете. Может быть, ваша ошибка на самом деле где-то еще?

...