Ответ - это комбинация некоторых других предложений, но ни одно из них не решит проблему, даже вместе!
Задача 1. Неэкранированные двойные кавычки
"Hello! <?php include("template.html"); ?>"
Здесь у вас есть то, что выглядит как одна строка. PHP видит начальную кавычку, а затем попадает в кавычку прямо перед словом template и говорит: о, строка готова. Затем он видит шаблон, который он считает переменной. Затем он видит точку и думает, что это новый оператор конкатенации. Затем он видит кавычку после html
и думает, что это новая строка, которая не допускается сразу после такой переменной.
Итак, вам нужно либо:
'Hello! <?php include("template.html"); ?>'
(Это то, что я бы порекомендовал. Строки в одинарных кавычках в PHP работают немного быстрее, потому что не нужно искать внутри строки переменные.)
или, как предложил другой человек, используя escape-символ для двойных кавычек:
"Hello! <?php include(\"template.html\"); ?>"
Задача 2. Неправильное место для htmlspecialchars ()
Но у вас есть другая, более серьезная проблема. htmlspecialchars в основном превращает все символы HTML в их объекты символов HTML.
Другими словами, <
становится <
.
Итак, то, что вы выводите в файл PHP, будет таким:
Hello! <?php include("template.html"); ?>
Когда вы запускаете этот файл, PHP не запускается, потому что нет действительного открытого тега.
Проблема 3. Неправильное использование include
Могу поспорить, что есть ПУТЬ лучший способ решить вашу проблему, чем использовать PHP для написания тега включения PHP, который включает ДРУГОЙ файл.
Ранний пользователь прав ... file_put_contents () или file_get_contents (), вероятно, что-то ближе к тому, что вы хотите. Но на самом деле, всякий раз, когда вы используете PHP для записи в PHP другого файла, возможно, есть лучший способ. Я почти гарантирую это.