Wie kann ich das Fragment (Wert nach Hash '#') von einer URL in PHP?Get Fragment (Wert nach Hash '#') von einer URL in PHP
Sagen aus http://domain.com/site/gallery/1#photo45
Ich will photo45
Wie kann ich das Fragment (Wert nach Hash '#') von einer URL in PHP?Get Fragment (Wert nach Hash '#') von einer URL in PHP
Sagen aus http://domain.com/site/gallery/1#photo45
Ich will photo45
Wenn Sie den Wert nach der Raute oder Anker zu erhalten, wie in den Browser eines Benutzers angezeigt: Dieses isn‘ t möglich mit "Standard" HTTP, da dieser Wert nie an den Server gesendet wird (daher wird er nicht in $_SERVER["REQUEST_URI"]
oder ähnlichen vordefinierten Variablen verfügbar sein). Sie würden eine Art JavaScript-Magie auf der Client-Seite benötigen, z.B. um diesen Wert als einen POST-Parameter einzuschließen.
Wenn es nur darum geht, eine bekannte URL aus welcher Quelle zu analysieren, ist die answer by mck89 vollkommen in Ordnung.
'alert (window.location.hash);' – sfussenegger
nur eine Anmerkung: 'window.location.hash' bekommt Sie das ganze Fragment einschließlich der' # '[hash] Zeichen ... und es ist natürlich in JavaScript :) –
BTW: JavaScript Magie: D: D: D: D: D ... 'var Formen = document.getElementsByTagName ('Form'); für (var i = 0; i
Sie nicht den Text nach der Raute bekommen können. Es wird in einer Anfrage nicht an den Server gesendet.
Dieser Teil wird „Fragment“ genannt und man kann es auf diese Weise erhalten:
$url=parse_url("http://domain.com/site/gallery/1#photo45 ");
echo $url["fragment"]; //This variable contains the fragment
Das ist sehr gut, aber es wäre ohne Fehler gewesen, wenn Sie '' '$ fragment = iset ($ url ['fragment']) hinzugefügt hätten? '#'. $ url ['fragment']: ''; '' 'Aber immer noch Daumen hoch !! –
fand ich diesen Trick, wenn u den Wert mit php bestehen will .. den Anker (#) Wert geteilt und es mit Javascript bekommen, dann als Cookie speichern, danach den Wert des Cookies mit PHP erhalten ~
http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
Ich habe für ein bisschen nach einem Workaround gesucht - und das einzige, was ich gefunden habe, ist URL Rewrites zu verwenden, um den "Anker" zu lesen. Ich fand in der Apache-Dokumentation hier http://httpd.apache.org/docs/2.2/rewrite/advanced.html folgenden ...
standardmäßig auf einen HTML-Anker-Umleitung nicht funktioniert, weil mod_rewrite das Zeichen # entweicht, ist es in% Drehen 23. Dies unterbricht wiederum die Umleitung.
Lösung: Verwenden Sie das Flag [NE] auf der RewriteRule. NE steht für No Escape.
Diskussion: Diese Technik funktioniert natürlich auch mit anderen speziellen Zeichen, die mod_rewrite standardmäßig URL-codiert.
Es kann andere Vorbehalte haben und was nicht ... aber ich denke, dass zumindest etwas mit dem # auf dem Server möglich ist.
if(strpos($url, "#") === false) echo "NO HASH !";
else echo "HASH IS: #".explode("#", $url)[1]; // arrays are indexed from 0
Oder in "alten" PHP müssen Sie die Explosionsvorge speichern das Array zuzugreifen:
$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
});
Je nach form
‚s method
Attribut Sie diesen Hash in PHP erhalten von: $_GET['fragment']
oder $_POST['fragment']
Mögliche Rückkehr: 1. ""
[leer string] (kein Hash) 2. vollständiger Hash INKLUSIVE das [Hash] -Zeichen (weil wir die window.location.hash
in JavaScript verwendet haben, die einfach so funktioniert :))
... (nicht während reguläre HTTP-Anfragen erwägen) ...
... Hope this half :)
Sie könnten auf der Client-Seite dann der Server-Seite eine Zeichenfolge ersetzen zu tun. Keine besonders robuste Lösung, aber wenn Sie eine schnelle Lösung wie ich wollen, wird es ausreichen, denke ich.
Auftraggeber:
Server:
$user_message = $_GET['userMessage'];
$user_message = str_replace("hashtag", "#", $user_message);
die Daten nach dem Doppelkreuz in einem Query-String zu erhalten ist einfach. Hier ist ein Beispiel, wenn ein Kunde auf ein Glossar von Begriffen aus einem Buch zugreift. Es nimmt den Namen Anker geliefert (#tesla), und liefert den Client zu diesem Begriff und hebt den Begriff und seine Beschreibung in blau, so dass es leicht zu sehen ist.
A. Richten Sie Ihre Saiten mit einem div id, so der Name Anker geht, wo sein soll und die Javascript können die Textfarben
<div id="tesla">Tesla</div>
<div id="tesla1">An energy company</div>
B. Verwenden Sie Javascript, um die schwere Arbeit zu tun ändern, auf die Server-Seite, eingefügt in Ihrer PHP-Seite, oder wo auch immer ..
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
C. ich bin starte die Java-Funktion automatisch, wenn die Seite geladen wird.
<script>
$(document).ready(function() {
D.Holen Sie sich die Anker (#tesla) aus der URL von dem Server
var myhash1 = $(location).attr('hash'); //myhash1 == #tesla
E. schneiden Sie die Raute aus der es
myhash1 = myhash1.substr(1) //myhash1 == tesla
F. erhielt ich den Begriff und die Beschreibung markieren müssen so i eine neue var
var myhash2 = '1';
myhash2 = myhash1.concat(myhash2); //myhash2 == tesla1
G. Nun erstellen kann ich die Textfarbe für den Begriff und Beschreibung manipulieren
var elem = document.getElementById(myhash1);
elem.style.color = 'blue';
elem = document.getElementById(myhash2);
elem.style.color = 'blue';
});
</script>
H. Dies funktioniert. Client klickt Link auf Clientseite (xyz.com # tesla) und geht direkt auf den Begriff. Der Begriff und die Beschreibung sind in blau durch Javascript für das schnelle Lesen markiert .. alle anderen Einträge in schwarz ..
Diese Antwort behandelt nur die clientseitige Behandlung des Fragments, während die Frage serverseitig (mit PHP) ist. –
mit der Client-Seite richtig eingerichtet, dann ist die Server-Seite einfach mit PHP. –
@ile http://en.wikipedia.org/wiki/Hash_symbol –
Duplizieren oder mindestens auf dem gleichen Zeilen als http://stackoverflow.com/questions/1957030/retrieve-the-hash-in-the-url-with-php, http://stackoverflow.com/questions/1162008/php-hash-fragment-portion- of-url und http://stackoverflow.com/questions/2181290/php-zend-framework-how-to-get-request-uri-fragment-from-request-object – Gordon
möglich Duplikat von [Wie bekomme ich den Wert nach der Hash in "somepage.php # name"?] (http://stackoverflow.com/questions/1917762/how-to-get-the-value-after-the-hash-in-somepage-phpname) – PhoneixS