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

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

编辑

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

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

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

4

2 回答 2

0

https://plus.google.com/+erikedgren在将 URL包含在 URL 末尾之前进行 URL 编码。+ 如果不是 url 编码,则为空格。

于 2016-04-20T19:10:51.563 回答
0

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

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

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

于 2016-04-20T19:26:17.133 回答