Heredoc не работает


<?php

$information = <<<INFO 
Name: John Smith
Address: 123 Main St
City: Springville, CA
INFO;

echo $information;

?>

Результат:

Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный T_SL в строке 3

 10
Author: Lightness Races in Orbit, 2010-09-18

4 answers

Синтаксический анализатор жалуется, потому что у вас есть пробелы после угловых скобок, объявляющих heredoc. Вам нужно убедиться, что вы действительно следуете синтаксису heredoc, который вы можете найти на сайте руководства по PHP (в частности: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc).

<?php
$information = <<<ENDHEREDOC
this is my text
ENDHEREDOC;
echo $information;
 22
Author: Robert Elwell, 2010-09-17 23:46:04

Я только что отредактировал ваш вопрос и исправил неверное форматирование (КАК и использование Markdown). Я обнаружил, что после <<<INFO есть пробел, который вызывает ошибку.

Удалите это пространство, и все должно работать нормально... ну - это должно работать нормально.

 4
Author: Crozin, 2010-09-17 23:47:55

Синтаксис Heredoc имеет некоторые строгие правила, которые мы должны учитывать;

1 - После открытия идентификатора не должно быть никакого символа

Верно

"$a = <<<HEREDOC"

Ложь

"<<<HEREDOC   "   //Remove space after opening identifier;

2 - После и перед закрывающим идентификатором не должно быть никаких других символов, кроме точки с запятой-разделителя ;

Верно

"HEREDOC;"

Ложь

"HEREDOC  ;"   //Remove space between HEREDOC and ;

Ложь

" HEREDOC;"   //Remove space before HEREDOC

Ложь

"HEREDOC; "   //Remove space after ;

Строка Heredoc. КОНЕЦ;

 2
Author: Erdinç Çorbacı, 2016-10-14 14:23:07
https://repl.it/@CiscoTest/PHP-Heredocs-lesslessless      
    <?php
        //Heredocs start with <<< and a token ended with semi-colon
        print <<< ENDHEREOK
        We used ENDHEREOK "as" our token
              Looks like it just "print"
              things "as" it is. Let me loooook at what I just typed

        I may add some more! I m gonna end it using ENDHEREOK but any token can be used
        Give it a "try"! Also pay attention to so many double quotes because it is mandatory!
         Also yes "if" you put
        space after token(ENDHEREOK) above, you will get an error, just hit enter key after token!
        Try this on repl.it
        https://repl.it/@CiscoTest/PHP-Heredocs-lesslessless
        ENDHEREOK;
        ?>
 0
Author: Cisco Test, 2018-07-30 18:45:01