2010-10-02 2 views
4

Как получить переменную хеша в php.Php для получения значения хеша из URL

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

catalog.php#album=2song=1 

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

+0

Возможный дубликат [Может ли PHP читать хэш-часть URL?] (Http://stackoverflow.com/questions/940905/can-php-read-the-hash-portion-of-the-url) –

ответ

4

Просто добавив ответ @ Alec.

Существует parse_url() функция:

который может вернуть fragment - after the hashmark #. Тем не менее, в вашем случае это будет возвращать все значения после особых отметок:

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

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

+2

Если у вас есть URL-адрес заранее, это бесполезно. – NullUserException

+0

Действительно. Позвольте мне изменить это и на мой ответ. –

+0

Спасибо. Похоже, я мог бы проработать эту идею в том, что мне нужно. – Andelas

8

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

1

Для этого вы можете использовать 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 
// very unsafe and silly code 

$content_hash_name = $_GET['content']; 

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

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