繁体   English   中英

PHP自动编码和在Wordpress中

[英]Php automatically encoding & in Wordpress

解决了

用htmlspecialchars()包装php中&字符的每个实例,通过输出&解决我的问题& 代替& 并允许下一页正确识别每个变量!

/解决了/

我目前正在Wordpress网站上工作,并尝试在php中创建一些javascript,然后将其回显到页面上。 此javascript的一部分使用window.open()和我在php中生成的网址打开一个新窗口/标签。 但是,当我回显包含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("&#038;"); ?>";
</script>
<?php
...

然后,当我检查要插入脚本的元素时显示的实际javascript是

...
<script type="text/javascript">
    var url = "&#038;";
    var url2 = "&#038;";
    var url3 = "&#038;";
    var url4 = "&#038;";
    var url4 = "&#038;";
</script>
...

我试过了urlencode()-将所有&排除在url外,但是$ _GET无法将它们识别为url变量。

这只是Wordpress的东西,还是php的东西? 而且,我能做些什么来使&出现为&??!

编辑

由于我的工作似乎有些混乱,因此让我进一步解释。 我正在使用php而非javascript创建网址。 然后,我使用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>";

除了将所有&字符输出为&#038;之外,上述输出正确无误&#038;

我认为您的页面或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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM