проблема цитирования 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, чтобы не быть вызванным. Как заставить его генерировать одинарные кавычки вокруг результата запроса $, в данном случае ed hardy?

0 php
12.12.2008 17:22:18
5 ОТВЕТОВ
РЕШЕНИЕ

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

0
12.12.2008 17:24:35
Я не уверен, как изменить строку эха, чтобы подать в суд на обоих, так как я должен иметь двойные кавычки вокруг функции JavaScript. Я просто уйду от них?
user1253538 12.12.2008 17:25:59
echo "<a href='#' onclick='updateByQuery(\"Layer3\", " . json_encode($query) . ");'>Link 1</a>";
0
12.12.2008 17:30:46
Исправлено форматирование для вас - вам нужно выбрать его и нажать кнопку «Пример кода» (бинарный значок)
Greg 12.12.2008 17:31:37
@Roborg; в результате получается: <a href='#' onclick='updateByQuery("Layer3", Ed Hardy);'> Ссылка 1 </a> Обратите внимание, что вокруг Эда Харди нет кавычек.
cLFlaVA 12.12.2008 18:25:21

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

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

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

2
12.12.2008 17:26:45
который производит & quot вместо ", который фактически ломает это
user1253538 12.12.2008 17:35:12
Нет, & quot; это то, что вы хотите, и исправит это для вас.
Greg 12.12.2008 17:36:35
@ Joshxtothe4, & quot; преобразуется в "браузером" до того, как он достигает анализатора Javascript.
strager 15.12.2008 00:14:41
echo "<a href='#' onclick='updateByQuery(\"Layer3\", \"" . json_encode($query) . "\");'>Link 1</a>";

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

<a href='#' onclick='updateByQuery("Layer3", "Ed Hardy");'>Link 1</a>
1
12.12.2008 17:48:53
Не допустимый XHTML, но я не буду -1, потому что он хочет HTML, кажется.
strager 15.12.2008 00:09:33

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

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

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