Jak mogę zaznaczyć fragment po symbolu „#” w moim adresie URL za pomocą PHP?
Wynik, który chcę, to „zdjęcie45”.
Oto przykładowy adres URL:
http://example.com/site/gallery/1#photo45
php
url
anchor
url-fragment
ilija veselica
źródło
źródło
Odpowiedzi:
Jeśli chcesz uzyskać wartość po znaku krzyżyka lub kotwicy, jak pokazano w przeglądarce użytkownika: Nie jest to możliwe w przypadku „standardowego” protokołu HTTP, ponieważ ta wartość nigdy nie jest wysyłana na serwer (dlatego nie będzie dostępna w
$_SERVER["REQUEST_URI"]
lub podobnych predefiniowane zmienne). Potrzebowałbyś jakiegoś rodzaju magii JavaScript po stronie klienta, np. Aby uwzględnić tę wartość jako parametr POST.Jeśli chodzi tylko o parsowanie znanego adresu URL z dowolnego źródła, odpowiedź mck89 jest jednak w porządku.
źródło
alert(window.location.hash);
window.location.hash
dostajesz cały fragment, W TYM#
znak [hash] ... i jest to oczywiście w JavaScript :)var forms = document.getElementsByTagName('form'); for(var i=0; i<forms.length;i++) forms[i].addEventListener('submit',function(){ var hidden = document.createElement("input"); hidden.setAttribute('type','hidden'); hidden.setAttribute('name','fragment'); hidden.setAttribute('value',window.location.hash); this.appendChild(hidden); });
... w zależności od "metody" twojego formularza otrzymujesz hash przez$_POST['fragment']
lub$_GET['fragment']
.... MAGIC!Ta część nazywa się „fragmentem” i możesz ją pobrać w ten sposób:
źródło
$fragment = parse_url("http://example.com/site/gallery/1#photo45", PHP_URL_FRAGMENT);
A) masz już adres URL z #hash w PHP? Łatwo! Po prostu przeanalizuj to!
Lub w "starym" PHP, aby uzyskać dostęp do tablicy, musisz wstępnie zapisać plik rozstrzelony:
B) Chcesz uzyskać #hash wysyłając formularz do PHP?
=> Użyj JavaScript MAGIC! (Aby wstępnie przetworzyć formularz)
W zależności od
form
„smethod
atrybut pojawi się ten skrót w PHP przez:$_GET['fragment']
lub$_POST['fragment']
Możliwe zwroty: 1.
""
[pusty ciąg] (bez krzyżyka) 2. cały hash WŁĄCZAJĄC#
znak [hash] (ponieważ użyliśmy znakuwindow.location.hash
JavaScript, który po prostu działa w ten sposób :))C) Chcesz uzyskać #hash w PHP TYLKO z żądanego adresu URL?
NIE MOŻESZ!
... (nie biorąc pod uwagę zwykłych żądań HTTP) ...
... Mam nadzieję, że to pomogło :)
źródło
Od jakiegoś czasu szukałem obejścia tego problemu - i jedyne, co znalazłem, to użycie funkcji ponownego zapisywania adresów URL w celu odczytania „kotwicy”. Znalazłem w dokumentach Apache tutaj http://httpd.apache.org/docs/2.2/rewrite/advanced.html następujące ...
Może mieć inne zastrzeżenia, a co nie ... ale myślę, że przynajmniej zrobienie czegoś z # na serwerze jest możliwe.
źródło
Nie możesz pobrać tekstu po znaku krzyżyka . Nie jest wysyłany do serwera w żądaniu.
źródło
Znalazłem tę sztuczkę, jeśli nalegasz, aby wartość w PHP. podziel wartość anchor (
#
) i pobierz ją za pomocą JavaScript, następnie zapisz jako plik cookie, a następnie pobierz wartość pliku cookie za pomocą PHPźródło
Możesz to zrobić za pomocą kombinacji javascript i php:
I po drugiej stronie;
Następnie podczas przesyłania formularza możesz pobrać wartość za pomocą $ _POST ['hash'] (ustaw formularz)
źródło
Jeśli chcesz dynamicznie pobierać hash z adresu URL, powinno to działać: https://stackoverflow.com/a/57368072/2062851
źródło
Najpierw musisz przeanalizować adres URL, więc wygląda to tak:
Jeśli chcesz przeanalizować rzeczywisty adres URL bieżącej przeglądarki, musisz poprosić o połączenie z serwerem.
źródło
$_SERVER['REQUEST_URI']
ma nie obejmować #fragmentPobieranie danych po znaku skrótu w ciągu zapytania jest proste. Oto przykład używany, gdy klient uzyskuje dostęp do słownika terminów z książki. Pobiera dostarczoną kotwicę nazwy (#tesla) i dostarcza klientowi ten termin oraz wyróżnia termin i jego opis na niebiesko, aby był łatwy do zobaczenia.
A. skonfiguruj swoje ciągi z id div, aby zakotwiczenie nazwy trafiło tam, gdzie powinno, a javascript może zmienić kolory tekstu
B. Używaj Javascript do wykonywania ciężkiej pracy, po stronie serwera, umieszczonego na stronie PHP lub gdziekolwiek.
C. Uruchamiam funkcję java automatycznie po załadowaniu strony.
D. pobrać kotwicę (#tesla) z adresu URL otrzymanego przez serwer
E. obciąć z niej znak krzyżyka
F. Muszę podkreślić termin i opis, więc utworzę nową zmienną
G. Teraz mogę manipulować kolorem tekstu dla terminu i opisu
H. To działa. klient klika link po stronie klienta (xyz.com # tesla) i przechodzi od razu do terminu. termin i opis są podświetlone na niebiesko przez JavaScript w celu szybkiego odczytania .. wszystkie inne wpisy pozostawione na czarno ..
źródło