Come posso ottenere il frammento (valore dopo hash '#') da un URL in php?Ottieni frammento (valore dopo hash '#') da un URL in php
esempio da http://domain.com/site/gallery/1#photo45
voglio photo45
Come posso ottenere il frammento (valore dopo hash '#') da un URL in php?Ottieni frammento (valore dopo hash '#') da un URL in php
esempio da http://domain.com/site/gallery/1#photo45
voglio photo45
Se si desidera ottenere il valore dopo il cancelletto o ancora, come mostrato nel browser di un utente: Questo isn' possibile con HTTP "standard" poiché questo valore non viene mai inviato al server (quindi non sarà disponibile in $_SERVER["REQUEST_URI"]
o variabili predefinite simili). Avresti bisogno di una sorta di magia JavaScript sul lato client, ad es. per includere questo valore come parametro POST.
Se si tratta solo di analizzare un URL noto da qualsiasi fonte, lo answer by mck89 è perfettamente adatto.
'alert (window.location.hash);' – sfussenegger
solo una nota: 'window.location.hash' ottiene l'intero frammento INCLUSO il segno' # '[hash] ... ed è, ovviamente, in JavaScript :) –
BTW: JavaScript magic: D: D: D: D: D ... 'var forms = document.getElementsByTagName ('form'); for (var i = 0; i
Non è possibile ottenere il testo dopo il segno cancelletto . Non viene inviato al server in una richiesta.
Quella parte è chiamata "frammento" e si può ottenere in questo modo:
$url=parse_url("http://domain.com/site/gallery/1#photo45 ");
echo $url["fragment"]; //This variable contains the fragment
Che è molto buono ma sarebbe stato senza errori se si aggiungesse '' '$ fragment = isset ($ url ['framment'])? '#'. $ url ['framment']: ''; '' 'Ma comunque Thumbs Up !! –
ho trovato questo trucco, se u insistono vuole il valore con php .. dividere il valore di ancoraggio (#) e farlo con javascript, quindi memorizzare come biscotto, dopo che ottengono il valore del cookie con php ~
http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
Sono stato alla ricerca di una soluzione alternativa per questo per un po '- e l'unica cosa che ho trovato è quello di utilizzare riscrittura di URL per leggere l' "ancora". Ho trovato nella documentazione apache qui http://httpd.apache.org/docs/2.2/rewrite/advanced.html quanto segue ...
Per impostazione predefinita, il reindirizzamento ad un'ancora HTML non funziona, perché mod_rewrite sfugge il carattere #, trasformandolo in% 23. Questo, a sua volta, interrompe il reindirizzamento.
Soluzione: utilizzare il flag [NE] su RewriteRule. NE sta per No Fuga.
Discussione: Questa tecnica ovviamente funzionerà anche con altri caratteri speciali che mod_rewrite, per impostazione predefinita, codifica URL.
Può avere altri avvertimenti e cosa no ... ma penso che almeno fare qualcosa con il # sul server sia possibile.
if(strpos($url, "#") === false) echo "NO HASH !";
else echo "HASH IS: #".explode("#", $url)[1]; // arrays are indexed from 0
O in "vecchio" di PHP è necessario pre-memorizzare l'esploso per accedere alla matrice:
$exploded_url = explode("#", $url); $exploded_url[1];
var forms = document.getElementsByTagName('form'); //get all forms on the site
for(var i=0; i<forms.length;i++) forms[i].addEventListener('submit', //to each form...
function(){ //add a submit pre-processing function that will:
var hidden = document.createElement("input"); //create an extra input element
hidden.setAttribute('type','hidden'); //set it to hidden so it doesn't break view
hidden.setAttribute('name','fragment'); //set a name to get by it in PHP
hidden.setAttribute('value',window.location.hash); //set a value of #HASH
this.appendChild(hidden); //append it to the current form
});
A seconda l' method
tuoi form
attributo si ottiene questo hash in PHP da: $_GET['fragment']
o $_POST['fragment']
possibili rendimenti: 1. ""
[vuoto stringa] (no hash) 2. intero hash INCLUSO il segno #
[hash] (perché abbiamo utilizzato lo window.location.hash
in JavaScript che funziona in quel modo :))
... (non tenendo in considerazione le richieste HTTP regolari) ...
... Spero che questo ha aiutato :)
Si potrebbe fare una stringa sostituire sul lato client poi il lato server. Non è una soluzione particolarmente robusta, ma se non avessi una soluzione rapida come me, basterà pensare.
Cliente:
Server:
$user_message = $_GET['userMessage'];
$user_message = str_replace("hashtag", "#", $user_message);
Ottenere i dati dopo la hashmark in una stringa di query è semplice. Ecco un esempio usato per quando un cliente accede a un glossario di termini da un libro. Prende il nome di ancoraggio consegnato (#tesla) e consegna il cliente a quel termine e mette in risalto il termine e la sua descrizione in blu in modo che sia facile da vedere.
A. configurazione corde con un ID div, in modo che il nome va ancora dove la sua suppone e il javascript possibile modificare i colori del testo
<div id="tesla">Tesla</div>
<div id="tesla1">An energy company</div>
B. utilizzare JavaScript per fare il lavoro pesante, sulla lato server, inserito nella pagina PHP, o dovunque ..
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
C. sto lanciando la funzione java automaticamente quando la pagina viene caricata.
<script>
$(document).ready(function() {
D.ottenere l'ancora (#tesla) dal URL ha ricevuto dal server
var myhash1 = $(location).attr('hash'); //myhash1 == #tesla
E. tagliare il segno hash fuori di esso
myhash1 = myhash1.substr(1) //myhash1 == tesla
F. ho bisogno di evidenziare il termine e la descrizione così ho creare un nuovo var
var myhash2 = '1';
myhash2 = myhash1.concat(myhash2); //myhash2 == tesla1
G. ora posso manipolare il colore del testo per la durata e la descrizione
var elem = document.getElementById(myhash1);
elem.style.color = 'blue';
elem = document.getElementById(myhash2);
elem.style.color = 'blue';
});
</script>
H. Questo funziona. il client fa clic sul collegamento sul lato client (xyz.com # tesla) e va dritto al termine. il termine e la descrizione sono evidenziati in blu da javascript per una rapida lettura .. tutte le altre voci lasciate in nero ..
Questa risposta riguarda solo la gestione lato client del frammento, mentre la domanda riguarda lato server (con PHP). –
con l'installazione lato client correttamente, quindi il lato server è facile con PHP. –
@ile http://en.wikipedia.org/wiki/Hash_symbol –
Duplicato o almeno sullo stesso linee come http://stackoverflow.com/questions/1957030/retrieve-the-hash-in-the-url-with-php, http://stackoverflow.com/questions/1162008/php-hash-fragment-portion- di-url e http://stackoverflow.com/questions/2181290/php-zend-framework-how-to-get-request-uri-fragment-from-request-object – Gordon
possibile duplicato di [Come ottenere il valore dopo l'hash in "somepage.php # name"?] (http://stackoverflow.com/questions/1917762/how-to-get-the-value-after-the-hash-in-somepage-phpname) – PhoneixS