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

$address выходы plus.google.com/ erikedgren. Зачем? И как я могу решить эту проблему?parse_url заменяет знак «плюс» пробелом

РЕДАКТИРОВАТЬ

Код выше выводит +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).

+0

Скопировал ваш точный код, '$ address' output" + erikedgren ", как и ожидалось, без' plus.google.com'. Не удалось воспроизвести проблему. Пожалуйста, предоставьте дополнительную информацию. –

+0

@mistermartin Это было действительно странно. См. Мой обновленный вопрос. – Erik

ответ

0

на основе обновленной вопрос, это, кажется, работает для меня:

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

я также заменил ltrim и rtrim, поскольку trim удалит как из начала и конца.

+0

Это работало безупречно! Большое спасибо! – Erik

0

URL-адрес https://plus.google.com/+erikedgren, прежде чем включать его в конце вашего URL-адреса. + - это пробел, если он не закодирован в url.

+0

Спасибо, но теперь я получаю ошибку «Объект не найден». Теперь URL-адрес «http: // 192.168.1.135/erik-edgren/url/https% 3A% 2F% 2Fplus.google.com% 2F% 2Berikedgren'. Если я нажму на другую ссылку, которая не кодируется URL-адресом, она работает нормально. – Erik