Heredoc

If you have a long string, you ought to consider using heredoc syntax. Put simply, heredoc allows you to define your own string delimiter 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. Here is a working example:

    <?php
    $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:
    EOT;

    ?>

There are several 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 enabled, which means you need to escape dollar symbols if you don't want PHP to replace variables with their values.

  • 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, type the delimiter with no whitespace around it, followed by a semicolon.

Without heredoc syntax, complicated string assignments can become very messy.

Get PHP in a Nutshell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.