2010-10-02 5 views
4

Comment puis-je obtenir une variable d'un hachage en PHP.PHP pour obtenir la valeur de hachage de l'URL

J'ai une variable à la page comme celui-ci

catalog.php#album=2song=1 

Comment puis-je obtenir les valeurs de l'album et la chanson et les mettre en variables PHP?

+0

duplication possible de [Peut PHP lire la partie hash de l'URL?] (Http://stackoverflow.com/questions/940905/can-php-read-the-hash-portion-of-the-url) –

Répondre

4

Juste ajouter à la réponse de @ Alec.

Il y a une fonction parse_url():

qui peut retourner fragment - after the hashmark #. Cependant, dans votre cas, il retournera toutes valeurs après la hachure:

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

Comme @NullUserException souligné, à moins que vous avez l'url d'avance ce qui est vraiment inutile. Mais, je sens qu'il est bon de savoir quand même.

+2

Sauf si vous avez l'URL à l'avance, c'est inutile. – NullUserException

+0

En effet. Permettez-moi de modifier cela dans ma réponse aussi. –

+0

Merci. On dirait que je peux travailler cette idée dans ce dont j'ai besoin. – Andelas

8

Vous ne pouvez pas obtenir cette valeur avec PHP car PHP traite les choses côté serveur, et le hachage dans l'URL est uniquement côté client et n'est jamais envoyé au serveur. JavaScript peut obtenir le hachage cependant, en utilisant window.location.hash (et éventuellement appeler un script PHP contenant cette information, ou ajouter les données au DOM).

1

Vous pouvez utiliser AJAX/PHP pour cela. Vous pouvez obtenir le hash avec javaScript et charger du contenu avec PHP. Supposons que nous charger le contenu principal d'une page, notre URL avec hachage est « http://www.example.com/#main »:

JavaScript dans notre tête:

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); 

Le PHP pourrait avoir quelque chose comme:

<?php 
// very unsafe and silly code 

$content_hash_name = $_GET['content']; 

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

?> 
Questions connexes