Проблема с цитированием php

У меня есть этот PHP-код

echo '<a href = "#" onclick = "updateByQuery(\'Layer3\', ' . json_encode($query) . ');">Link 1</a>';

который генерирует ссылку, подобную этой:

<a href = "#" onclick = "updateByQuery('Layer3', "Ed Hardy");">Link 1</a><li>Link 2</li>

Причинение того, что javascript не вызывается. Как мне заставить его генерировать одинарные кавычки вокруг результата $ query, в данном случае ed hardy?

Стоит ли изучать 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 и хотите разрабатывать...
0
0
135
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Попробуйте сделать наоборот ... используйте одинарные кавычки для html и двойные кавычки для javascript. Вот как мы это делаем на самом деле.

Я не уверен, как изменить строку эха, чтобы предъявить иск обоим, так как у меня должны быть двойные кавычки вокруг функции JavaScript. Я просто убегу от них?

user1253538 12.12.2008 20:25
echo "<a href='#' onclick='updateByQuery(\"Layer3\", " . json_encode($query) . ");'>Link 1</a>";

Исправлено форматирование для вас - вам нужно выбрать его и нажать кнопку Code Sample (двоичный значок)

Greg 12.12.2008 20:31

@Roborg; это дает: <a href='#' onclick='updateByQuery("Layer3", Эд Харди);'> Ссылка 1 </a> Обратите внимание, что вокруг Эда Харди нет цитат.

cLFlaVA 12.12.2008 21:25

Вы должны html кодировать это:

echo '<a href = "#" onclick = "updateByQuery(\'Layer3\', ' . htmlentities(json_encode($query)) . ');">Link 1</a>';

Вы также можете использовать htmlspecialchars

который производит "вместо", что фактически нарушает его

user1253538 12.12.2008 20:35

Эээ нет, & quot; это то, что вы хотите, и исправлю это за вас.

Greg 12.12.2008 20:36

@ Joshxtothe4, & quot; преобразуется браузером в "до того, как попадет в синтаксический анализатор Javascript.

strager 15.12.2008 03:14
echo "<a href='#' onclick='updateByQuery(\"Layer3\", \"" . json_encode($query) . "\");'>Link 1</a>";

Это производит:

<a href='#' onclick='updateByQuery("Layer3", "Ed Hardy");'>Link 1</a>

Недействительный XHTML, но я не буду -1, потому что он, кажется, хочет HTML.

strager 15.12.2008 03:09

Цитаты - проблема встроенных обработчиков. Как говорит Роберг, в тексте нужно использовать htmlentities.

Другой способ обойти это - использовать методы перехвата и анонимные функции, а не встроенные обработчики.

echo '
<a href = "#" id = "link_1">Link 1</a>
<script>document.getElementById("link_1").onclick =
       function() { updateByQuery("Layer3", '.json_encode($query).'); }
</script>
';

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