gpt4 book ai didi

php - PHP 中 Javascript 的 "unescape"

转载 作者:行者123 更新时间:2023-12-02 07:37:48 27 4
gpt4 key购买 nike

我有一个用于图像托管的 Google Chrome 扩展程序,它会向我的网站发送一个 URL。该 URL 通过 Javascript 的 escape 方法进行编码

escape 编码的 URL 如下所示:

http%253A//4.bp.blogspot.com/-xa4Krfq2V6g/UF2K5XYv3kI/AAAAAAAAAJg/8wrqZQP9ru8/s1600/LuffyTimeSkip.png

我需要通过 PHP 以某种方式使 URL 恢复正常,因此我可以根据 filter_var($the_url, FILTER_VALIDATE_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() 不适合我。正如您所注意到的,我正在通过 $_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 来获得您想要的结果。

参见 this question escape vs. encodeURI vs. encodeURIComponent 的解释。

关于php - PHP 中 Javascript 的 "unescape",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14364496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com