Это не эхо-утверждение, которое «вызывает» проблемы, это отсутствие информации, доступной для новичков, поэтому я постараюсь объяснить их.
Существует четыре способа указания строки в php:
Использование одинарной кавычки
$str = 'Hello World. This might be a php $variable';
echo $str; // Outputs: Hello World. This might be a php $variable
Поскольку строка заключена в одинарные кавычки, механизм php не будет пытаться интерпретировать переменную $ как фактическую переменную, и будет отображено содержимое того, что вы видите в кавычках.
Использование двойной кавычки
$variable = 'random text';
$str = "Hello World. This will be interpreted as $variable";
echo $str; // Outputs: Hello World. This will be interpreted as random text
В этом примере php попытается найти переменную с именем $ variable и использовать ее содержимое в строке.
Heredoc полезен для таких вещей, как то, что вы хотели сделать - у вас есть смесь переменных, одинарные кавычки, двойные кавычки и экранирование всего, что может быть беспорядком. Следовательно, хорошие php люди реализовали следующий синтаксис для нас:
$str = <<<EOF
<img src="$directory/images/some_image.gif" alt='this is alt text' />
<p>Hello!</p>
EOF;
Что произойдет, это то, что движок PHP будет пытаться интерпретировать переменные (и функции, но я не буду публиковать примеры того, как это сделать, поскольку он доступен на php.net), однако вы завернули строку с
Это то же самое, что использование строки в одинарных кавычках - замена переменных не происходит, а для указания чего-либо в качестве nowdoc - просто заключите разделитель в символы одинарных кавычек, как показано в примере.
Если вы в состоянии понять эти четыре принципа, проблемы с кавычками в вашей строке должны исчезнуть:)