PHP heredoc syntax

In order to allow people to easily write large amounts of text from within PHP, but without the need to constantly escape things, heredoc syntax was developed. Heredoc might be a little tricky to understand at first, but it’s actually a big help. Put simply, it allows you to define your own string limiter so that you can make it something other than a double or single quote. So, for example, we could use the string "EOT" (end of text) for our delimiter, meaning that we can use double quotes and single quotes freely within the body of the text – the string only ends when we type EOT.

It is a little more complicated than that in practice, but not much – the string delimiter needs to be by itself on a line, in the very first column. That is, you cannot add spacing or tabs around it.

Take a look at this example:

$mystring = <<<EOT
    This is some PHP text.
    It is completely free
    I can use "double quotes"
    and 'single quotes',
    plus $variables too, which will
    be properly converted to their values,
    you can even type EOT, as long as it
    is not alone on a line, like this:

There are several key things to note about heredoc, and the example above:

  • You can use anything you like; "EOT" is just an example

  • You need to use <<< before the delimiter to tell PHP you want to enter heredoc mode

  • Variable substitution is used in PHP, which means you do need to escape dollar symbols – if you do not, PHP will attempt variable replacement.

  • You can use your delimiter anywhere in the text, but not in the first column of a new line

  • At the end of the string, just type the delimiter with no spaces around it, followed by a semi-colon to end the statement

Without heredoc syntax, complicated string assignments can quickly become very messy. Heredoc is not used all that often in the wild – very often you will wish it were used more, because too many scripts you will come across have messy code as a result of not using heredoc!

Step 1 – PHP heredoc syntax

PHP heredoc syntax

Heredoc is a robust way to create string in PHP with more lines but without using quotations. Heredoc is rarely used as the day by day usage is more complicated as creating strings with quotes or double quotes. Besides this the not properly used heredoc can lead to problems in your code.

However if you want to use it you can do it in the following way:


  1. <?php

  2. $str = <<<DEMO

  3. This is a

  4. demo message

  5. with heredoc.

  6. DEMO;


  8. echo $str;

  9. ?>


This is a demo message with heredoc.

As you see the heredoc starts with the <<< operator and an identifier. After it you can type your text in more lines as if it were a double quoted string. It means that you can use variables inside the heredoc. If you are ready with your text you only need to write the identifier again in a new line as follows:


  1. <?php

  2. $name = "Max";

  3. $str = <<<DEMO

  4. Hello $name! <br/>

  5. This is a

  6. demo message

  7. with heredoc.

  8. DEMO;


  10. echo $str;

  11. ?>


Hello Max! This is a demo message with heredoc.

Don’t forget that it is not allowed to indent the closing tag if you do so you will get a parsing error.

Leave a comment