Использование закрывающих / открывающих тегов PHP не очень хорошее решение по двум причинам: вы не можете печатать переменные PHP в простом HTML, и это делает ваш код очень трудным для чтения (следующий блок кода начинается с конечной скобки }
, но читатель понятия не имеет, что было раньше).
Лучше использовать синтаксис heredoc . Это та же концепция, что и в других языках (например, bash).
<?php
if ($condition) {
echo <<< END_OF_TEXT
<b>lots of html</b> <i>$variable</i>
lots of text...
many lines possible, with any indentation, until the closing delimiter...
END_OF_TEXT;
}
?>
END_OF_TEXT
- это ваш разделитель (это может быть любой текст, например EOF, EOT). Все, что между ними, в PHP считается строкой, как если бы оно было в двойных кавычках, поэтому вы можете печатать переменные, но вам не нужно экранировать кавычки, что очень удобно для печати атрибутов html.
Обратите внимание, что закрывающий разделитель должен начинаться с начала строки, а точка с запятой должна располагаться сразу после него без других символов (END_OF_TEXT;
).
Heredoc с поведением строки в одинарных кавычках ('
) называется nowdoc . Внутри nowdoc анализ не выполняется. Вы используете его так же, как heredoc, просто вы помещаете начальный разделитель в одинарные кавычки - echo <<< 'END_OF_TEXT'
.