Php, чтобы получить значение хеша из URL - PullRequest
4 голосов
/ 03 октября 2010

Как мне получить переменную хэша в php.

У меня есть переменная на этой странице

catalog.php#album=2song=1

Как я могу получить значения альбома и песни и поместить их в переменные PHP?

Ответы [ 3 ]

8 голосов
/ 03 октября 2010

Вы не можете получить это значение с помощью PHP, потому что PHP обрабатывает вещи на стороне сервера, а хэш в URL-адресе только на стороне клиента и никогда не отправляется на сервер. JavaScript может получить хеш, используя window.location.hash (и при необходимости вызвать скрипт PHP, включающий эту информацию, или добавить данные в DOM).

4 голосов
/ 03 октября 2010

Просто добавляю ответ @ Алек.

Имеется функция parse_url():

Который может вернуть fragment - after the hashmark #. Однако в вашем случае он вернет все значений после хеш-метки:

Array
(
    [path] => catalog.php
    [fragment] => album=2song=1
)

Как указывало @NullUserException, если у вас заранее нет URL, это действительно бессмысленно. Но, тем не менее, мне приятно это знать.

1 голос
/ 14 декабря 2012

Для этого вы можете использовать AJAX / PHP. Вы можете получить хеш с помощью javaScript и загрузить некоторое содержимое с помощью PHP. Предположим, мы загружаем основное содержимое страницы, поэтому наш URL с хешем: "http://www.example.com/#main":

JavaScript в нашей голове:

 function getContentByHashName(hash) { // "main"
    // some very simplified AJAX (in this example with jQuery)
    $.ajax({
      url: '/ajax/get_content.php?content='+hash, // "main"
      success: function(content){
        $('div#container').html(content); // will put "Welcome to our Main Page" into the <div> with id="container"
      }
    });
 }

 var hash=parent.location.hash; // #main
 hash=hash.substring(1,hash.length); // take out the #

 getContentByHashName(hash);

PHP может иметь что-то вроде:

<?php
// very unsafe and silly code

$content_hash_name = $_GET['content'];

if($content_hash_name == 'main'):
  echo "Welcome to our Main Page";
endif;

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