如何像浏览器一样使用 php 对 URL 进行编码

     2023-02-21     216

关键词:

【中文标题】如何像浏览器一样使用 php 对 URL 进行编码【英文标题】:How to encode URL using php like browsers do 【发布时间】:2011-07-23 10:28:30 【问题描述】:

我有这样的网址

http://www.example.com/Data/image/office-dôn-sì-à.jpg

我想使用 php 中的 copy 函数将该文件复制到我的服务器。所以第一件事就是把它编码成这个(我认为浏览器做同样的事情)

http://www.example.com/Data/image/office-d%C3%B4n-s%C3%AC-%C3%A0.jpg

但是如果我使用函数urlencode,完整的url将被编码为

http%3A%2F%2Fwww.example.com%2FData%2Fimage%2Foffice-d%C3%B4n-s%C3%AC-%C3%A0.jpg

这不再是一个 URL,也不是我想要的。

有什么帮助吗?

【问题讨论】:

您想使用 HTTP 包装器将文件从其他服务器下载到您的服务器吗? php.net/manual/en/wrappers.php - 你如何获得 URL? 编码的 ULR 是从 FF 的地址栏复制而来的。由于隐私,我确实更改了它的主机名。我想复制文件使用:copy('http://www.example.com/Data/image/office-d%C3%B4n-s%C3%AC-%C3%A0.jpg', 'destination.jpg'); 如果您确定只有最后一段(文件名)将包含特殊字符,您可以使用 Russel 的解决方案。 【参考方案1】:

因此,这里的其他答案似乎在很大程度上忽略了您的帖子。希望我没有这样做。

在我看来,您只想对基本名称进行编码?如果这是真的,这个 ad-hoc 函数应该可以解决问题:

function encode_basename($url) 
    $url = explode('/', $url);
    $base = array_pop($url);

    return implode('/', $url) . '/' . urlencode($base);

//returns: http://www.example.com/Data/image/office-d%25C3%25B4n-s%25C3%25AC-%25C3%25A0.jpg

【讨论】:

函数 encode_basename($url) $url = explode('/', $url); $base = array_pop($url);返回 implode('/', $url) 。 '/' 。 rawurlencode($base); 不应将此答案标记为已接受,因为它不能解决问题。正如其他人指出的那样,您不能使用urlencode(),而是使用rawurlencode()

js中文转码url问题

...B9%FAjs编码后为:%E4%B8%AD%E6%96%87提问:js怎样才能输出像php一样的编码的呢?实现上可能是这样的。原因使他们对默认输出流的编码方式不一样。你线看看pho默认的输出编码类型,然后在JS的输出流上使用相同的编码控制类型。你... 查看详情

如何像在 MESSAGING 应用程序中那样对 ListView 中的各个行进行颜色编码?

】如何像在MESSAGING应用程序中那样对ListView中的各个行进行颜色编码?【英文标题】:HowtocolorcodeindividualrowsinListViewasisdoneinMESSAGINGapp?【发布时间】:2011-01-2201:22:48【问题描述】:如何像在本机MESSAGING应用程序中一样对ListView中的... 查看详情

我来教你如何将url进行编码和解码

...际组织并没有规定具体的编码方法,而是交给应用程序(浏览器)自己决定。这导致"URL编码"成为了一个混乱的领域。2如何URL编码解码「URL编码解码工具 https://www.gjk.cn/urlencode」可以对任 查看详情

C# .Net 如何使用 %20 而不是 + [重复] 对 URL 空间进行编码

】C#.Net如何使用%20而不是+[重复]对URL空间进行编码【英文标题】:C#.NetHowtoEncodeURLspacewith%20insteadof+[duplicate]【发布时间】:2018-03-0209:11:39【问题描述】:如何使用%20而不是+对查询字符串空间进行编码?因为System.WebHttpUtility.UrlEncod... 查看详情

如何像浏览器一样在 Java 中组合 URL 片段?

】如何像浏览器一样在Java中组合URL片段?【英文标题】:HowdoyoucombineURLfragmentsinJavathesamewaybrowsersdo?【发布时间】:2012-01-0420:42:11【问题描述】:注意:我问的是现实世界的问题,而不是理论目的;查看问题的最后一部分——浏... 查看详情

如何在 C# 中对字符串进行 URL 编码

】如何在C#中对字符串进行URL编码【英文标题】:HowtoURLencodestringsinC#【发布时间】:2014-03-2715:46:31【问题描述】:我们如何在C#中使用URL(RFC1738)标准对字符串进行编码?以下在线工具正在使用此标准http://www.freeformatter.com/url-encoder... 查看详情

get请求中关于中文的编码与解码

...况如何解决?原因:在使用get请求传递参数时,需要依赖浏览器环境,由于我们在javascript中没有做任何操作,完全依赖浏览器进行编码后传递到后台,一旦于后台编码格式不一样,就会出现乱码。答:1在javascript中使用encodeURI()... 查看详情

我应该对 POST 数据进行 URL 编码吗?

...问题描述】:我正在将数据发布到外部API(如果相关,则使用PHP)。我应该对我传递的POST变量进行URL编码吗?还是我只需要对GET数据进行URL编码?更新:这是我的PHP,以防相关:$fields=array(\'mediaupload\'=>$file_field,\' 查看详情

javascript对浏览器的url进行编码解码

关于url编码,js有三个函数。有三个解码方法,escape,encodeURI,encodeURIComponent()。有三个解码方法,unescapse,decodeURI,decodeURIComponent。1、escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。比如"春节"的返回结... 查看详情

如何使用 PHP 对 MapQuest 地理编码器进行批量地理编码?

】如何使用PHP对MapQuest地理编码器进行批量地理编码?【英文标题】:HowdoIdobulkgeocodingagainsttheMapQuestgeocoderusingPHP?【发布时间】:2012-01-2409:50:45【问题描述】:有没有人使用MapQuest作为地理编码服务?我需要的是一个简单的函数,... 查看详情

获取地址中的query参数,完美版

...考技术A注意点:解码的原因:如果url中出现了特殊字符浏览器会自动给他们进行编码,可以理解成执行了一次encodeURI(),有时我们可能就是要通过url传递一些特殊参数比如get请求,我们会主动进行编码decodeURI、decodeURIComponent... 查看详情

如何使用基于令牌的身份验证对在浏览器中输入 url 的用户进行身份验证?

】如何使用基于令牌的身份验证对在浏览器中输入url的用户进行身份验证?【英文标题】:howtoauthenticateuserswhomauallyentertheurlinbrowserusingthetokenbasedauthentication?【发布时间】:2016-10-0219:39:43【问题描述】:我正在通过传递jwt令牌使... 查看详情

CouchDB Lucene 如何对包含减号 (-) 的查询进行 URL 编码

】CouchDBLucene如何对包含减号(-)的查询进行URL编码【英文标题】:CouchDBLuceneHowtoURLEncodeQuerycontainingMinus(-)【发布时间】:2014-08-2015:37:32【问题描述】:我想查询包含减号(-)的文本,例如foo-bar使用couchdblucene全文查询。遵循lucene规则... 查看详情

php如何使用电子邮件确认对注册表单进行编码(代码片段)

查看详情

如何防止 python 请求对我的 URL 进行百分比编码?

】如何防止python请求对我的URL进行百分比编码?【英文标题】:HowtopreventpythonrequestsfrompercentencodingmyURLs?【发布时间】:2014-06-2304:30:33【问题描述】:我正在尝试在python中使用requests.get()获取以下格式的URL:http://api.example.com/export/... 查看详情

如何对字符串进行url编码(代码片段)

我有一个带有空格和NSString字符的URL字符串(&)。我如何url编码整个字符串(包括&&符号和空格)?答案不幸的是,stringByAddingPercentEscapesUsingEncoding并不总是100%工作。它对非URL字符进行编码,但仅保留保留字符(如斜线/... 查看详情

浏览器编码函数escape(),encodeuri(),encodeuricomponent()的区别

参考技术A1、escape()escape()是js编码函数中最古老的一个。实际上,escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。比如“你好”的返回结果是"%u4F60%u597D"。无论网页的原始编码是什么,一旦被Java... 查看详情

url两次编码

...对这种情况,可以连续使用两次encodeURI在客户端(主要指浏览器)对非英文字符进行编码,然后在服务端使用java.net.URLDecoder(String."UTF-8")解码, 查看详情