parse_url用空格替换加号

时间:2016-04-20 18:43:32

标签: php parse-url

$url = parse_url('https://plus.google.com/+erikedgren');
$address = ltrim(rtrim($url['path'], '/'), '/');
echo $address;

$address输出plus.google.com/ erikedgren。为什么?我该如何解决这个问题?

修改

上面的代码输出+erikedgren。但是当我将$url中的地址替换为$_GET['u'](从parse_url(https://plu...)parse_url($_GET['u']))时,我得到plus.google.com/ erikedgren。让我解释一下我的系统是如何工作的。

当我点击我本地服务器上的网站上的链接时(我还没有发布更新),外部地址的URL如下所示:http://192.168.1.135/erik-edgren/url/https://plus.google.com/+erikedgren

带有extern地址的最后一部分是$_GET['u']正在获取的内容。以下是RewriteRule的样子:RewriteRule ^url/(.*)$ get-url.php?u=$ 1($和1之间没有空格)。

2 个答案:

答案 0 :(得分:0)

网址编码https://plus.google.com/+erikedgren,然后将其包含在网址末尾。如果不是url编码,+是一个空格。

答案 1 :(得分:0)

根据您更新的问题,这似乎对我有用:

$url = parse_url($_GET['u']);
$address = trim(rawurldecode(urlencode($url['path'])), '/');
echo $address;

我还替换了ltrimrtrim,因为trim将从开头和结尾都删除。