首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP: fopen(UrlWithWhiteSpaces)

PHP: fopen(UrlWithWhiteSpaces)
EN

Stack Overflow用户
提问于 2014-09-28 02:32:05
回答 1查看 1K关注 0票数 0

正如您在标题上所看到的,我正在尝试使用空白空间来fopen()一个Url。其他堆叠溢出的帖子并没有真正的帮助,可能是它们已经过时了吗?

我试过:

  • urlencode
  • rawurlencode

上述任何一种方法都不起作用,http://test.com/two - words.jpg --这给了我:

  • 用户代码:http%3A%2F%2Ftest.com%2Ftwo+-+words.jpg
  • rawurlencode:http%3A%2F%2Ftest.com%2Ftwo%20-%20words.jpg

当我试图清楚地获得http://test.com/two%20-%20words.jpg时,当您键入http://test.com/two - words.jpg并点击enter时,浏览器就会显示这一点。

我需要使用哪些函数来将这些转换从space转换到%20,并将all作为我可能需要的其他可能的转换(我想不出更多的转换了,但我很确定它们存在,也许是在特殊的符号上)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-28 02:37:52

使用预浸

代码语言:javascript
复制
$newUrl = preg_replace('/ /', '%20', 'http://test.com/two - words.jpg');

echo $newUrl;

输出

代码语言:javascript
复制
http://test.com/two%20-%20words.jpg

或者是应激

代码语言:javascript
复制
$newUrl = str_replace(' ', '%20', 'http://test.com/two - words.jpg');

但更一般的情况下,您将需要编码的不仅仅是空间。我创建了这个函数,如果您不想使用urlencoderawurlencode,这就是您要寻找的:

代码语言:javascript
复制
function encodeURI($URI)
{
    return str_replace(array('%', '^', '+', '{', '[', '}', ']', '"', '|', '\\', '<', '>', ' '),
        array('%25', '%5E', '%2B', '%7B', '%5B', '%7D', '%5D', '%22', '%7C', '%5C', '%3C', '%3E', '%20'), $URI);
}

示例

代码语言:javascript
复制
echo encodeURI('http://test.com/two - ["word<><s.jpg');

输出

代码语言:javascript
复制
http://test.com/two%20-%20%5B%22word%3C%3E%3Cs.jpg
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26081074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档