如何在JavaScript和PHP中编码URL?

如何在JavaScript和PHP中编码URL?,php,javascript,url,urlencode,decode,Php,Javascript,Url,Urlencode,Decode,我想在POST请求中发送一个名为surl的变量中的URL。我应该如何用JavaScript对其进行编码并用PHP对其进行解码?例如,surl的值可以是http://www.google.co.in/search?q=javascript+urlencode+w3schools 编辑 对不起,我忘了提一下,这不是表单提交,而是ajax请求。您不需要做任何事情。照原样寄。浏览器和PHP将为您完成所有转义和取消转义(如果您使用form.surl.value=surl;form.submit()和$\u

我想在POST请求中发送一个名为
surl
的变量中的URL。我应该如何用JavaScript对其进行编码并用PHP对其进行解码?例如,
surl
的值可以是
http://www.google.co.in/search?q=javascript+urlencode+w3schools

编辑


对不起,我忘了提一下,这不是表单提交,而是ajax请求。

您不需要做任何事情。照原样寄。浏览器和PHP将为您完成所有转义和取消转义(如果您使用
form.surl.value=surl;form.submit()
$\u POST['surl']
)。或者您可以只使用普通表单而不使用任何JavaScript(如果它满足您的需要)

回复henasraf的评论。试试这个

<form id="form" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"
    onsubmit="this.via_js.value=this.via_plain_form.value;">
<input type="hidden" name="via_js"/>
<input type="text" name="via_plain_form" value="Paste you url here"/>
<input type="submit" name="submit" value="Submit"/>
</form>

<?php

if (isset($_POST['submit'])) {
    var_export($_POST);
}

?>

你不需要做任何事。照原样寄。浏览器和PHP将为您完成所有转义和取消转义(如果您使用
form.surl.value=surl;form.submit()
$\u POST['surl']
)。或者您可以只使用普通表单而不使用任何JavaScript(如果它满足您的需要)

回复henasraf的评论。试试这个

<form id="form" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"
    onsubmit="this.via_js.value=this.via_plain_form.value;">
<input type="hidden" name="via_js"/>
<input type="text" name="via_plain_form" value="Paste you url here"/>
<input type="submit" name="submit" value="Submit"/>
</form>

<?php

if (isset($_POST['submit'])) {
    var_export($_POST);
}

?>

使用
encodeURIComponent(uri)
(用于编码)和
decodeURIComponent(uri)
进行解码

例如(编码)

输出

http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab

解码留给读卡器。:-)


来源:

使用
encodeURIComponent(uri)
(用于编码)和
decodeURIComponent(uri)
进行解码

例如(编码)

输出

http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab

解码留给读卡器。:-)


来源:

至于PHP,它是
urlencode()
urldecode()
至于PHP,它是
urlencode()
urldecode()
,如果我错了,请纠正我,但是URL中的+将算作空格,不是吗?PHP肯定不会修复它,它会修复常规空格并将它们转换为“+”符号,反之亦然,但要添加一个literal+,必须使用
%2B
。我认为这也适用于其他情况。PHP或浏览器不在乎是否传输URL或其他内容。URL与任何其他表单数据一样处理。浏览器会转义表单数据中的所有奇特字符,传输数据,PHP会在另一端取消转义。如果我错了,请纠正我,但URL中的+将计为空格,不是吗?PHP肯定不会修复它,它会修复常规空格并将它们转换为“+”符号,反之亦然,但要添加一个literal+,必须使用
%2B
。我认为这也适用于其他情况。PHP或浏览器不在乎是否传输URL或其他内容。URL与任何其他表单数据一样处理。浏览器将转义表单数据中所有奇特的字符,传输数据,PHP将在另一端取消转义它们。
var uri="http://w3schools.com/my test.asp?name=ståle&car=saab";
document.write(encodeURIComponent(uri));