Парсинг html <script> через PHP не работает полностью

Я нахожу это очень странным, должно быть что-то я делаю не так, но все же ... Я работаю над страницей с использованием файлов PHP и TPL. В моем файле TPL в нижнем колонтитуле есть место для дополнительных строк, если это необходимо.

Например, проверка формы с помощью Javascript.

поэтому в PHP я сделал это:

$foot = "<script type=\"text/javascript\">if (document.getElementById){loadEvents();}</script>";

затем анализируется переменная $ foot, и результат в HTML следующий:

<script type = "text/javascript">if (document.getElementById)</script>

Итак, {loadEvents();} пропал.

Кто-нибудь видит, что мне здесь не хватает ... Я серьезно не нахожу. Я забыл сбежать от персонажа или типа того?

Вы имеете в виду Smarty под файлами TPL? Как $ foot попадает в tpl файл?

Tom Haigh 01.12.2008 18:05

Может быть, было бы неплохо сказать людям, что вы используете шаблонизатор, вместо того, чтобы позволить им догадываться.

Tomalak 01.12.2008 18:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
2
563
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Я считаю, что с помощью {} PHP ожидает наличие переменной внутри них. Я не тестировал это, но попробуйте использовать одинарные кавычки вместо двойных кавычек.

-1, потому что php не анализирует {var} как переменную. Он использует $ var, $ {var} или {$ var}.

epochwolf 01.12.2008 18:45

Я не сказал {var} ...? Все, что я сказал, это то, что он ожидает переменную; в этом случае да, это будет похоже на {$ var}

donohoe 28.05.2009 16:55
Ответ принят как подходящий

Очевидно, что шаблонизатор, который вы используете разъедает часть в фигурных скобках.

Попробуйте что-нибудь вроде:

$foot = "{literal}<script type=\"text/javascript\">if (document.getElementById){loadEvents();}</script>{/literal}";

не работает, я также заметил, что последняя кавычка в вашем решении двойная, исправлена, все еще не работает

Vordreller 01.12.2008 18:04

да. Увидел это слишком поздно, исправил.

Tomalak 01.12.2008 18:06

-1, потому что это просто не истинное эхо "{1 + 1}"; не будет выводить "2". {} В двойных кавычках используется только для устранения неоднозначности переменных, например "он выпил немного пива". Проблема здесь, скорее всего, в движке шаблонов, и в этом случае исправление будет зависеть от того, какой движок использовался.

Greg 01.12.2008 18:06

Это неверно - строка $ foot = "<script ... etc. вычисляется правильно.

Tom Haigh 01.12.2008 18:09

Мне не было ясно, что здесь задействован шаблонизатор. Хотя следовало подумать об этом.

Tomalak 01.12.2008 18:11

шаблонизатор или нет, "1 + 1 = {1 + 1}" не оценивается как "1 + 1 = 2"

Tom Haigh 01.12.2008 18:18

Верно, но поскольку мне все равно пришлось полностью изменить свой ответ, это больше не актуально.

Tomalak 01.12.2008 18:20

удалено -1, но я не уверен, что smarty все равно проанализирует переменную, созданную в PHP. конечно, он будет анализировать только файлы .tpl.

Tom Haigh 01.12.2008 19:16

Похоже, вы используете механизм шаблонов, такой как Smarty, который пытается проанализировать все, что находит в фигурных скобках.

Эта страница из документации smarty объясняет, как заставить smarty игнорировать разделы, которые он иначе анализировал бы.

Если вы используете smarty, вы можете использовать {literal}.

буквальный

Другие вопросы по теме