У меня простая проблема. Мне нужно получить значение параметра из URL.
URL выглядит так:
http://www.example.com/index.php?someUrl=http://www.example.com/folder/index.htm#<id=18025>>newwnd=false
Мне нужно получить значение someUrl
в php.
Что я попробовал:
$_GET['someUrl'];
Вывод я получаю это http://www.example.com/folder/index.htm
Выход нужно получить:
http://www.example.com/folder/index.htm#<id=18025>>newwnd=false
Замечания: Я не могу разделить URL после # в новый параметр.
Я надеюсь, что смогу прояснить вопрос.
РЕДАКТИРОВАТЬВ соответствии с ценным отзывом, я закодировал строку перед отправкой в качестве параметра URL.
Я сделал кодирование с помощью функции JavaScript encodeURIComponent
Теперь URL-адрес становится таким, как показано ниже:
http://www.example.com/index.php?someUrl=http%3A%2F%2Fexample.com%folder%2Ftallyhelp.htm%23%253Cid%3D18025%253E%253Enewwnd%3Dfalse
После декодирования в php urldecode
функция, я получаю результат http://www.example.com/folder/index.htm#>newwnd=false
‘id’ удалить из результата.
Ваша проблема в том, что если ваш запрос к вашей странице это:
http://www.example.com/index.php?someUrl=http://www.example.com/folder/index.htm#<id=18025>>newwnd=false
тогда что бы ни было после #
является тегом привязки, это означает, что все, что следует, не является параметром, который вы можете $_GET
это просто якорный тег. так что вам нужно закодировать это #
(и некоторые другие странные символы, которые могут вызвать больше проблем)
так что если вам удастся сделать запрос на свою страницу, как это:
http://www.example.com/index.php?someUrl=http%3A%2F%2Fwww.example.com%2Ffolder%2Findex.htm%23%3Cid%3D18025%3E%3Enewwnd%3Dfalse
тогда вы сможете использовать $_GET['someUrl'];
чтобы получить значение, которое вы хотите, потому что #
будет закодирован (среди других символов тоже)
так как сделать так, чтобы ваш запрос был таким? просто используйте urlencode
закодировать ваш someUrl
параметр.
посмотри, как это работает
echo urlencode('http://www.example.com/folder/index.htm#<id=18025>>newwnd=false');
поэтому после кодирования ваших ссылок указание на эту страницу будет таким
<a href="http://www.example.com/index.php?someUrl=http%3A%2F%2Fwww.example.com%2Ffolder%2Findex.htm%23%3Cid%3D18025%3E%3Enewwnd%3Dfalse">my link</a>
как вы можете видеть #
будет закодирован, и это не позволит ему возиться с URL-адресом запроса, и вы сможете получить эту строку через $_GET['someUrl'];
ОБНОВЛЕНИЕ для нового редактирования OP:
если вы закодировали с JS encodeURIComponent
затем используйте rawurldecode()
в PHP. увидеть Как декодировать URL в php, где URL кодируется с помощью encodeURIComponent () который также имеет другой ответ, который может помочь.
Других решений пока нет …