1

解決した

php の & 文字の各インスタンスを htmlspecialchars() でラップすると、&代わりに出力することで問題が解決し&、次のページで各変数を正しく認識できるようになりました!

/解決済み/

私は現在Wordpressサイトで作業しており、phpでjavascriptを作成してページにエコーしようとしています。この JavaScript の一部は、window.open() を使用して新しいウィンドウ/タブを開き、php で生成した 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("&#038;"); ?>";
</script>
<?php
...

次に、スクリプトが挿入されている要素を検査すると表示される実際の JavaScript は次のとおりです。

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

URL からすべての & を urlencode() しようとしましたが、$_GET はそれらを URL 変数として認識しません。

これはWordpressだけのものですか、それともphpのものですか? そして、& をただの & として表示させるためにできることはありますか?!

編集

私がやろうとしていることについて混乱があるように思われるので、さらに説明させてください。JavaScript ではなく、php を使用して 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>";

上記は、すべての & 文字が として出力されることを除けば、正しく出力され&#038;ます。

4

1 に答える 1