Javascript';s";“无景观”;在PHP中

Javascript';s";“无景观”;在PHP中,php,javascript,validation,url,hyperlink,Php,Javascript,Validation,Url,Hyperlink,我的图像主机有一个谷歌浏览器扩展,它会向我的网站发送一个URL。该URL通过Javascript的escape方法进行编码 由escape编码的URL如下所示: http%253A//4.bp.blogspot.com/-xa4Krfq2V6g/UF2K5XYv3kI/AAAAAAAAAJg/8wrqZQP9ru8/s1600/LuffyTimeSkip.png 我需要以某种方式通过PHP使URL恢复正常,这样我就可以对照filter\u var($the\u URL,filter\u VAL

我的图像主机有一个谷歌浏览器扩展,它会向我的网站发送一个URL。该URL通过Javascript的
escape
方法进行编码

escape
编码的URL如下所示:

http%253A//4.bp.blogspot.com/-xa4Krfq2V6g/UF2K5XYv3kI/AAAAAAAAAJg/8wrqZQP9ru8/s1600/LuffyTimeSkip.png
我需要以某种方式通过PHP使URL恢复正常,这样我就可以对照
filter\u var($the\u URL,filter\u VALIDATE\u URL)
检查它,如果URL像上面那样,它显然会失败

以下是Javascript的外观:

function upload(img) {
    var baseurl="http://imgit.org/remote?sent-urls=1&remote-urls=" + escape(img.srcUrl);
    uploadImage(baseurl);
}
function uploadImage(imgurl) {
        chrome.tabs.create({
        url: imgurl,
        selected: true
    });
}

var title = "Upload this image to IMGit";
var id = chrome.contextMenus.create({"title": title, "contexts": ['image'], "onclick": upload});
这就是我在PHP中所做的:

if (!filter_var($file, FILTER_VALIDATE_URL) || !filter_var(urldecode($file), FILTER_VALIDATE_URL))
{
    throw_error('The entered URLs do not have a valid URL format.', 'index.php#remote'); break;
}
坦率地说,
urldecode()
不适合我。正如您所注意到的,我通过
$\u GET
接收URL

处理这种情况的最佳方法是什么


实际问题:如何在PHP中取消转义URL?是否有更好的方法来处理此问题?

您将希望使用
encodeURIComponent
而不是
escape

function upload(img) {
    var baseurl="http://imgit.org/remote?sent-urls=1&remote-urls=" + encodeURIComponent(img.srcUrl);
    uploadImage(baseurl);
}
然后,您可以在PHP中使用
urldecode
,以获得所需的结果


有关发送Javascript的
escape
encodeURI
encodeURIComponent

的说明,请参阅:

var baseurl="http://imgit.org/remote?sent-urls=1&remote-urls=" + encodeURIComponent(img.srcUrl);
PHP代码中的

$url = urldecode($_GET["my_url"])

什么是
$url
?来自
$\u GET
的任何内容都会自动解码。在
urldecode
运行后,您能发布url的外观吗?此外,您可能希望查看
encodeUri
,作为
escape
的替代方案。这可能会有所帮助。请注意,根据接收服务器的不同,它可能无法正确解码escape对较高ASCII或非ASCII字符的编码方式。在
上载
功能中,如果
警报(img.srcUrl)
,您是否获得已编码的url?