Эредок не работает - PullRequest
       45

Эредок не работает

11 голосов
/ 18 сентября 2010
<?php

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

echo $information;

?>

Результат:

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

Ответы [ 4 ]

25 голосов
/ 18 сентября 2010

Парсер жалуется, потому что у вас есть пробелы после угловых скобок, объявляющих наследственность. Вы должны убедиться, что вы действительно следуете синтаксису heredoc, который вы можете найти на сайте PHP Manual (в частности: 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;
4 голосов
/ 18 сентября 2010

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

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

3 голосов
/ 14 октября 2016

Синтаксис 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. END;

0 голосов
/ 30 июля 2018
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;
        ?>
...