РЕШИТЬ
Обертывание каждого экземпляра символа & в php с помощью htmlspecialchars () устраняет мою проблему путем вывода &
вместо &
и позволил следующей странице правильно распознать каждую из переменных!
/ Решаемые /
В настоящее время я работаю над сайтом WordPress и пытаюсь создать javascript в php, а затем повторить его на странице. Часть этого javascript открывает новое окно / вкладку, используя window.open () и url, который я создал в php. Однако, когда я повторяю переменную, содержащую url, все символы &
auto кодируются как &
,
Вот пример того, что происходит:
... ?> <script type="text/javascript"> var url = "&"; var url2 = "<?php echo "&"; ?>"; var url3 = <?php echo json_encode("&"); ?>; var url4 = "<?php echo html_entity_decode("&"); ?>"; var url5 = "<?php echo html_entity_decode("&"); ?>"; </script> <?php ...
Тогда фактический javascript, который отображается, когда я проверяю элемент, в который вставлен скрипт,
... <script type="text/javascript"> var url = "&"; var url2 = "&"; var url3 = "&"; var url4 = "&"; var url4 = "&"; </script> ...
Я попробовал urlencode () – все из & out из URL, но тогда $ _GET не распознает их как переменные URL.
Это просто вещь WordPress, или это вещь php? И, есть ли что-нибудь, что я могу сделать, чтобы показать … как?
РЕДАКТИРОВАТЬ
Поскольку, кажется, есть некоторая путаница в том, что я пытаюсь сделать, позвольте мне объяснить дальше. Я создаю URL-адрес, используя php, а не javascript. Затем я создаю javascript, используя php, а затем повторяю это на странице. Вышеприведенная выдержка показывает только проблему, с которой я столкнулся. Фактический сегмент трески выглядит примерно так:
$header_element .= "<script type=\"text/javascript\">\n" . "function validateForm(form) {\n" . "\tvar isInvalid = false;\n" . $str_all_validation . "\tif (!isInvalid) {\n" . "\t\trunReport(form);\n" . "\t} else {\n" . "\talert('You must enter all report parameters.');\n" . "\t}\n" . "}\n" . "function runReport(form) {\n" . "\twindow.open('/?page_id=172&PageId=$str_page_id&ReportName=$str_report_name" . "$str_all_param, '_blank')\n" . "}\n" . "</script>";
Вышеуказанные выходы корректно, за исключением того, что все символы & выводятся как &
,
Я думаю, что ваша кодировка для вашей страницы или вашего php смешана.
попробуйте добавить эту строку в свой php:
header('Content-Type: text/html; charset=UTF-8');
это должно убедиться, что все, что вы используете с помощью php, находится в UTF-8.
И убедитесь, что ваша кодировка для вашего javascrip одинакова.
PS Вы можете изменить charset=UTF-8
для чего-то вроде charset=ISO-8859-1
или любого кодирования вашего использования в вашем javascript.
РЕДАКТИРОВАТЬ:
НЕ ИСПОЛЬЗУЙТЕ ПОСЛЕДНИЙ ОТВЕТ, НЕ ЗАКЛЮЧАЮЩАЯ ПРОБЛЕМУ !!!
попробуйте и замените html_entity_decode()
с помощью htmlspecialchars()