# символ в строке запроса - PullRequest
1 голос
/ 20 августа 2009

Когда запрашивается сайт PHP, например, somesite.php?a=some text # some more

В настоящее время кажется, что $_REQUEST["a"] возвращает строку «некоторый текст», как я могу получить «немного текста # еще немного». Есть ли другие персонажи, которые обрабатываются с помощью PHP?

Ответы [ 7 ]

8 голосов
/ 20 августа 2009

Хеш (#) представляет собой « идентификатор фрагмента » (также неофициально известный как «якорь») и относится к местоположению в пределах страницы - и вы ' верно, он не отправляется на сервер.

Это единственный символ URL, который ведет себя так.

Если вам нужно включить хеш-символ в URL, вам нужно закодировать его как %23

4 голосов
/ 20 августа 2009
somesite.php?a=<?=urlencode( "some text # some more" )?>

Превращает в:

somesite.php?a=some+text+%23+some+more
1 голос
/ 20 августа 2009

Если он у вас есть, вы можете написать javascript, чтобы опубликовать его для вас:

<script>

function checkHash(){
  var hash = window.location.hash;
  if(hash){
    // see if we've already included this
    var loc = window.location.pathname;
    if(!loc.indexOf('hashData=') >= 0){
      // hashData param not included
      window.location.href = loc + '&hashData=' + encodeURIComponent(hash) + hash;
    }
  }
};
checkHash();
</script>

Есть некоторые очевидные проблемы с этим (например, двойная передача элементов). Примечание. Если кто-то щелкнет ссылку на хэш-страницу на странице, код не будет перезапущен, поэтому вам нужно будет следить за изменениями в хэше. Вы можете или не можете заботиться об этом случае.

1 голос
/ 20 августа 2009

Вы можете использовать функции urlencode () и urldecode () это будет% 23 вместо символа #

1 голос
/ 20 августа 2009

Вы не можете. Браузер не отправляет часть URL после # на сервер.

Таким образом, это не PHP, который удаляет эту часть URL, он никогда не видит ее.

1 голос
/ 20 августа 2009

Символ "#" является специальным в спецификации URL; это относится к местоположению на странице (названному тегом 'a', например: <a name='top'>this is the top of the page</a>). Он и все после него не передаются на сервер (php).

0 голосов
/ 20 августа 2009

Символ # и любые последующие символы указывают и привязывают. Это точка на странице, к которой будет переходить браузер.

Насколько я знаю, это только для браузера и никогда не передается на сервер - возможно потому, что это ничего не значит для сервера,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...