2016-05-24 3 views
0

я следующий URLGET и filter_input останавливается на символ "#"

http://www.example.com/check.php?q=498#2D83B631%3800EBD!801600D*7E3CC13 

Тогда я пытаюсь

<?php var_dump($_GET); ?> 

и

<?php 
echo $my_string = filter_input(INPUT_GET, 'q', FILTER_SANITIZE_STRING); 
?> 

Но они оба, кажется, остановиться на символ «#» и только дисплей 498. Есть ли способ получить весь 498#2D83B631%3800EBD!801600D*7E3CC13?

+0

Да, поскольку '#' в URL-адресе определяет, где начинается секция 'фрагмент', заканчивая часть запроса. Вам нужно закодировать специальные символы. –

ответ

1

На сервере вы можете получить только URL-адрес до #. Если вам нужно значение после #, вам понадобится сценарий на стороне клиента, чтобы получить URL-адрес.

Если это значение q, вам следует кодировать сначала urlencode(). Таким образом, вы получите все значения от q

Ваш URL должен выглядеть следующим образом: http://www.example.com/check.php?q=498%232D83B631%253800EBD!801600D * 7E3CC13

Для декодирования URL можно использовать urldecode()

0

Фрагменты не отправлять на сервер вообще.

https://en.wikipedia.org/wiki/Fragment_identifier

Когда агент (например, веб-браузер) запрашивает веб-ресурс с веб-сервера,> агент отправляет URI на сервер, но не отправляет фрагмент.

Передача данных в качестве другого параметра GET была бы жизнеспособной альтернативой.

Смежные вопросы