2009-12-24 8 views
5

qualcuno qui in SO mi ha detto che l'hash (#) nell'url potrebbe essere recuperato dalla funzione php parse_url? è vero?recupera l'hash nell'url con php?

il mio sito Web ha un sacco di effetti Ajax e voglio essere in grado di passare un URL con un hash all'indice.php in modo che possa visualizzare le informazioni in base ai valori hash.

es. se un utente fa clic e naviga nel mio sito web e trova una cosa che desidera condividere, allora può copiare l'indirizzo e inviarlo al suo amico e quando questa persona entra vede la stessa cosa.

Ho provato a utilizzare javascript per salvare i valori hash nei cookie ma non funziona con firefox ed è troppo lento in safari (l'html verrà mostrato per primo, quindi è necessario aggiornare la pagina una seconda volta per il contenuto corretto essere mostrato).

qualsiasi altra soluzione è il benvenuto

EDIT: im molto confused..if uso il parse_url devo digitare l'URL me stesso in PHP per ottenere l'hash? qual è il punto allora ... la mia domanda se il mio amico può inserire l'url con # valori e php potrebbe elaborarlo? sembra un no, ho ragione?

+1

qualche esempio di codice di ciò che vuoi dire sarebbe utile. – Myles

+0

PHP può elaborarlo se si invia la stringa al server. È possibile farlo tramite ajax, un modulo postale, ecc. – Sampson

+0

ma non attraverso il browser quando l'utente lo inserisce correttamente? – ajsie

risposta

5

parse_url() può ottenere l'hash da una stringa di url. Annotare la firma:

mixed parse_url (string $url [, int $component = -1 ]) 

È necessario conoscere già la stringa. Per esempio, dalla documentazione:

<?php 

    $url = 'http://username:[email protected]/path?arg=value#anchor'; 
    print_r(parse_url($url)); 
    echo parse_url($url, PHP_URL_PATH); 

?> 

uscite

Array 
(
    [scheme] => http 
    [host] => hostname 
    [user] => username 
    [pass] => password 
    [path] => /path 
    [query] => arg=value 
    [fragment] => anchor 
) 
/path 

Nota la voce sotto chiave "frammento".

+0

quindi significa no? – ajsie

+0

Non necessariamente. È possibile passare la stringa al server e quindi utilizzare parse_url. – Sampson

+1

È possibile accedere a quel valore di hash in javascript con 'window.location.hash' – Sampson

11

L'hash nell'URL non è nemmeno ottenere sul server. Non c'è modo di accedervi da qualsiasi linguaggio di programmazione sul lato server.

0

qualcuno qui in SO mi ha detto che il cancelletto (#) nell'URL potrebbe essere recuperate per funzione php parse_url? è vero questo ?

Sì:

parse_url('http://stackoverflow.com/questions/1957030/retrieve-the-hash-in-the-url-with-php/1957040#1957040', PHP_URL_FRAGMENT); // 1957040 

Ma non è possibile determinare l'hash sul lato server senza conoscere l'URL completo a priori, non so se l'HTTP_REFERER tiene questo hash (non credo).