Jak mogę uzyskać fragment (wartość po haszowaniu "#") z adresu URL w php?Pobierz fragment (wartość po haszowaniu "#") z adresu URL w php
Say od http://domain.com/site/gallery/1#photo45
Chcę photo45
Jak mogę uzyskać fragment (wartość po haszowaniu "#") z adresu URL w php?Pobierz fragment (wartość po haszowaniu "#") z adresu URL w php
Say od http://domain.com/site/gallery/1#photo45
Chcę photo45
Jeśli chcesz uzyskać wartość po znaku hash lub kotwicy, jak pokazano w przeglądarce użytkownika: Ten ISN” możliwe dzięki "standardowemu" HTTP, ponieważ ta wartość nigdy nie jest wysyłana do serwera (dlatego nie będzie dostępna w $_SERVER["REQUEST_URI"]
lub podobnych wstępnie zdefiniowanych zmiennych). Będziesz potrzebował jakiejś magii JavaScript po stronie klienta, np. włączyć tę wartość jako parametr POST.
Jeśli chodzi tylko o parsowanie znanego adresu URL z dowolnego źródła, answer by mck89 jest całkowicie w porządku.
'alert (window.location.hash);' – sfussenegger
po prostu notatka: 'window.location.hash' dostanie ci cały fragment W TYM znaku' # '[hash] ... i to jest oczywiście w JavaScript :) –
BTW: Magia JavaScript: D: D: D: D: D ... 'var forms = document.getElementsByTagName (" formularz "); for (var i = 0; i
Nie można uzyskać tekst po znaku hash. Nie jest wysyłane do serwera w żądaniu.
Ta część nazywa się „fragment” i można dostać go w ten sposób:
$url=parse_url("http://domain.com/site/gallery/1#photo45 ");
echo $url["fragment"]; //This variable contains the fragment
To jest bardzo dobry, ale bezbłędnie byłoby dodać '' 'fragment = isset ($ url ['fragment'])? "#". $ url ['fragment']: ''; '' 'Ale wciąż kciuki! –
znalazłem ten trick, jeśli u chcą domagać wartość za pomocą php .. podzielić wartość kotwicy (#) i dostać go z javascript, a następnie zapisać jako plik cookie, potem uzyskać wartość cookie z php ~
http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
Szukałem trochę obejścia tego problemu - i jedyne, co znalazłem, to użycie przepisywania adresów URL do odczytania "kotwicy". Znalazłem w docs apache tutaj http://httpd.apache.org/docs/2.2/rewrite/advanced.html Po ...
Domyślnie przekierowanie do kotwicy HTML nie działa, ponieważ mod_rewrite ucieka # charakter, przekształcając go w 23%. To z kolei przerywa przekierowanie.
Rozwiązanie: Użyj flagi [NE] na RewriteRule. NE oznacza nr Escape.
Dyskusja: Ta technika będzie oczywiście działać również z innymi specjalnymi znakami , które mod_rewrite domyślnie koduje URL.
Może mieć inne zastrzeżenia, a co nie ... ale myślę, że przynajmniej robienie czegoś z # na serwerze jest możliwe.
if(strpos($url, "#") === false) echo "NO HASH !";
else echo "HASH IS: #".explode("#", $url)[1]; // arrays are indexed from 0
Albo w „starej” PHP trzeba wcześniej zapisać rozebranego dostępu do tablicy:
$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
});
zależności od form
„s method
przypisuje się ten skrót w PHP przez: $_GET['fragment']
lub $_POST['fragment']
ewentualnych powrotów: 1. ""
[pusty string] (bez skrótu) 2. cały hash w tym #
[hash] znak (ponieważ użyliśmy window.location.hash
w JavaScript, który po prostu działa w ten sposób :))
... (nie biorąc pod uwagę podczas regularnych żądań HTTP) ...
... Nadzieja to pomogło :)
Można zrobić ciąg zastąpić po stronie klienta, następnie po stronie serwera. Nie jest to szczególnie solidne rozwiązanie, ale jeśli nie uda ci się znaleźć szybkiego rozwiązania takiego jak ja, to wystarczy.
Klient:
Serwer:
$user_message = $_GET['userMessage'];
$user_message = str_replace("hashtag", "#", $user_message);
Pierwsze dane po hashmark w ciągu kwerendy jest prosta. Oto przykład, w którym klient uzyskuje dostęp do słownika terminów z książki. Wymaga podania nazwy zakotwiczenia (#tesla) i dostarcza klientowi do tego terminu oraz podświetla termin i jego opis na niebiesko, aby był łatwy do zobaczenia.
A. Konfiguracja struny z div id, więc nazwa kotwica idzie gdzie jej podobno i javascript można zmienić kolory tekstu
<div id="tesla">Tesla</div>
<div id="tesla1">An energy company</div>
B. Wykorzystanie Javascript by wykonać ciężką pracę, na po stronie serwera, włożona do strony PHP lub gdziekolwiek ..
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
C. mam uruchomienie funkcji java automatycznie po załadowaniu strony.
<script>
$(document).ready(function() {
D.dostać kotwicę (#tesla) z adresu URL otrzymanego przez serwer
var myhash1 = $(location).attr('hash'); //myhash1 == #tesla
E. przyciąć znak hash go wyłączyć
myhash1 = myhash1.substr(1) //myhash1 == tesla
F. Muszę podkreślić określenie i opis więc utworzyć nowy var
var myhash2 = '1';
myhash2 = myhash1.concat(myhash2); //myhash2 == tesla1
G. teraz mogę manipulować kolor tekstu dla terminu oraz opis
var elem = document.getElementById(myhash1);
elem.style.color = 'blue';
elem = document.getElementById(myhash2);
elem.style.color = 'blue';
});
</script>
H. To działa. klient klika łącze po stronie klienta (xyz.com # tesla) i przechodzi w prawo do terminu. termin i opis są podświetlone na niebiesko przez javascript dla szybkiego czytania .. wszystkie inne wpisy pozostawione na czarno ..
Ta odpowiedź dotyczy tylko obsługi fragmentu po stronie klienta, podczas gdy pytanie dotyczy strony po stronie serwera (z PHP). –
Po prawidłowym skonfigurowaniu strony klienta, po stronie serwera jest łatwo z PHP. –
@ile http://pl.wikipedia.org/wiki/Hash_symbol –
Duplikat lub przynajmniej na tym samym linie jako http://stackoverflow.com/questions/1957030/retrieve-the-hash-in-the-url-with-php, http://stackoverflow.com/questions/1162008/php-hash-fragment-portion- of-url i http://stackoverflow.com/questions/2181290/php-zend-framework-how-to-get-request-uri-fragment- from-request-object – Gordon
możliwy duplikat [Jak uzyskać wartość po hash w "somepage.php # name"?] (http://stackoverflow.com/questions/1917762/how-to-get-the-value-after-the-hash-in-somepage-phpname) – PhoneixS