Я хочу отправить 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);
Попробуйте этот код:
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.
Потому что у вас есть амперсанд в вашем 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