解决了
用 htmlspecialchars() 将 & 字符的每个实例包装在 php 中,通过输出&
而不是解决了我的问题,&
并允许下一页正确识别每个变量!
/解决了/
我目前正在开发一个 Wordpress 网站,并尝试在 php 中创建一些 javascript,然后将其回显到页面上。此 javascript 的一部分使用 window.open() 和我在 php.ini 中生成的 url 打开一个新窗口/选项卡。但是,当我回显包含 url 的变量时,所有&
字符都自动编码为&
.
这是正在发生的事情的一个例子:
...
?>
<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()-ing 所有 & 的 url,但随后 $_GET 不将它们识别为 url 变量。
这只是一个 Wordpress 的东西,还是一个 php 的东西?而且,我能做些什么来让 & 显示为 & 吗?!
编辑
由于我试图做的事情似乎有些混乱,让我进一步解释一下。我正在使用 php 而不是 javascript 创建一个 url。然后我使用 php 生成一些 javascript,然后将其回显到页面上。以上摘录仅显示了我实际面临的问题。实际的鳕鱼段看起来像这样:
$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>";
除了将所有 & 字符输出为 . 之外,上述输出正确&
。