JavaScriptとPHP間でURLをやりとりするブックマークレット(URLエンコード)
2020/11/29 更新
JavaScriptとPHPの間でURLをやり取りする場合にURLエンコードする際の関数のメモ。ブックマークレットからURLをサーバ側のPHPへ送るものを例として取り上げる。
JavaScriptとPHP間でURLをやりとりするブックマークレット(URLエンコード)
タイトルの通り、JavaScriptでURLエンコードし、PHP側でそれを受け取ってデコードするためのメモです(もちろんその逆も可能)。
今回は一例として、現在見ているページのURLをブックマークレット(JavaScript)からサーバのPHPへGETリクエストで送るものを考えます。
両者の間でURLをやり取りするために、URLエンコードを行います。
これにより、パラメータに含むことが出来ない(例えば&や?などは別の意味を持ってしまう)文字を含めることが出来ます。
結論から書くと、JavaScriptはencodeURIComponent()、PHPはrawurlencode()が対応しています。
従って今回の例では受け取り側のPHPではrawurldecode()を用いてデコードします。
今回の例をプログラムとすると以下のようになります。
ブックマークレット:
javascript:location.href="http://example.org/test.php?url="+encodeURIComponent(location.href);
PHP:
<?php
$foo = $_GET['url'];
$bar = rawurldecode( $_GET['url'] );
echo "受け取ったものをそのまま表示すると {$foo} です。";
echo "デコードすると {$bar} です。";
?>
ブックマークレットでは、example.org上のtest.phpのurlパラメータへ現在見ているページのURLを送っています。
PHPでは受け取ったURLを上ではそのまま、下ではデコードして表示しています。
このように、今回の例はそれだけでは意味を持ちませんが、組み合わせることでブックマークレットからURLを送ることが出来るようになる、というメモでした。
今回はこの辺で。
では、また…