Не удается получить полное значение URL, переданного в строке запроса

Я хочу отправить URL на другую страницу, например:

http://localhost/l.php?u=http://www.simplesite.com?view=photo&id=13

Где URL http://www.simplesite.com?view=photo&id=13 это значение параметра u,

в l.php Файл мой результат выглядит следующим образом:

echo $_GET['u']; // http://www.simplesite.com?view=photo
// &id=13 is missing

Что не так с этим? Я хочу перенаправить на URL http://www.simplesite.com?view=photo&id=13, но &id=13 часть отсутствует.

Я создаю ссылки с preg_replace, Я не могу применить функцию PHP к $1 переменная

preg_replace("/(https?:\/\/[\w-?#&;~=\.\/\@]+[\w\/])/i","<a target=\"_blank\"href=\"l.php?u=$1\">$1</a>",$text);

1

Решение

Попробуйте этот код:

preg_replace_callback("/(https?:\/\/[\w-?#&;~=\.\/\@]+[\w\/])/i", function($m){
return "<a target='_blank' href='l.php?u=".urlencode($m[0])."'>".$m[0]."</a>";
}, $text);

Это заменит все ссылки с тегами привязки & также закодирует URL.

0

Другие решения

Потому что у вас есть амперсанд в вашем URL. Когда вы используете это, вы определяете новый параметр URL. Используйте urlencode перед отправкой и urldecode, когда вам нужен URL.

Например.: urlencode('http://localhost/l.php?u=http://www.simplesite.com?view=photo&id=13');

выход: http%3A%2F%2Flocalhost%2Fl.php%3Fu%3Dhttp%3A%2F%2Fwww.simplesite.com%3Fview%3Dphoto%26id%3D13

Чтобы декодировать это снова:

urldecode('http%3A%2F%2Flocalhost%2Fl.php%3Fu%3Dhttp%3A%2F%2Fwww.simplesite.com%3Fview%3Dphoto%26id%3D13');

выход: http://localhost/l.php?u=http://www.simplesite.com?view=photo&id=13

1

По вопросам рекламы [email protected]