Comment puis-je sélectionner le fragment après le symbole «#» dans mon URL en utilisant PHP?
Le résultat que je veux est "photo45".
Ceci est un exemple d'URL:
http://example.com/site/gallery/1#photo45
php
url
anchor
url-fragment
ilija veselica
la source
la source
Réponses:
Si vous souhaitez obtenir la valeur après la marque de hachage ou l'ancre comme indiqué dans le navigateur d'un utilisateur: ce n'est pas possible avec HTTP "standard" car cette valeur n'est jamais envoyée au serveur (par conséquent, elle ne sera pas disponible dans
$_SERVER["REQUEST_URI"]
ou similaire variables prédéfinies). Vous auriez besoin d'une sorte de magie JavaScript côté client, par exemple pour inclure cette valeur en tant que paramètre POST.S'il ne s'agit que d'analyser une URL connue de n'importe quelle source, la réponse de mck89 est tout à fait correcte .
la source
alert(window.location.hash);
window.location.hash
vous donne le fragment entier INCLUANT le#
signe [hash] ... et c'est, bien sûr, en 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); });
... en fonction de la "méthode" de votre formulaire, vous obtenez le hachage par$_POST['fragment']
ou$_GET['fragment']
.... MAGIC!Cette partie s'appelle "fragment" et vous pouvez l'obtenir de cette manière:
la source
$fragment = parse_url("http://example.com/site/gallery/1#photo45", PHP_URL_FRAGMENT);
A) Vous avez déjà une URL avec #hash en PHP? Facile! Analysez-le!
Ou dans "ancien" PHP, vous devez pré-stocker l'éclaté pour accéder au tableau:
B) Vous souhaitez obtenir un #hash en envoyant un formulaire à PHP?
=> Utilisez un peu de MAGIE JavaScript! (Pour pré-traiter le formulaire)
En fonction de vos
form
« smethod
vous attribuer obtenir ce hachage en PHP par:$_GET['fragment']
ou$_POST['fragment']
Retours possibles: 1.
""
[chaîne vide] (pas de hachage) 2. hachage entier INCLUANT le#
signe [hachage] (car nous avons utilisé lewindow.location.hash
en JavaScript qui fonctionne de cette façon :))C) Vous voulez obtenir le #hash en PHP JUSTE à partir de l'URL demandée?
VOUS NE POUVEZ PAS!
... (pas en considérant les requêtes HTTP régulières) ...
... J'espère que cela a aidé :)
la source
J'ai cherché une solution de contournement pour cela pendant un moment - et la seule chose que j'ai trouvée est d'utiliser des réécritures d'URL pour lire "l'ancre". J'ai trouvé dans la documentation Apache ici http://httpd.apache.org/docs/2.2/rewrite/advanced.html ce qui suit ...
Il peut y avoir d'autres mises en garde et autres ... mais je pense qu'au moins faire quelque chose avec le # sur le serveur est possible.
la source
Vous ne pouvez pas obtenir le texte après la marque de hachage . Il n'est pas envoyé au serveur dans une requête.
la source
J'ai trouvé cette astuce si vous insistez pour la valeur avec PHP. divisez la
#
valeur d' ancre ( ) et obtenez-la avec JavaScript, puis stockez-la en tant que cookie, puis obtenez la valeur du cookie avec PHPla source
Vous pouvez le faire en combinant javascript et php:
Et de l'autre côté;
Ensuite, lors de l'envoi du formulaire, vous pouvez récupérer la valeur via $ _POST ['hash'] (définir le formulaire)
la source
Si vous souhaitez récupérer dynamiquement le hachage de l'URL, cela devrait fonctionner: https://stackoverflow.com/a/57368072/2062851
la source
Vous devez d'abord analyser l'url, donc cela se passe comme suit:
Si vous avez besoin d'analyser l'URL réelle du navigateur actuel, vous devez demander à appeler le serveur.
la source
$_SERVER['REQUEST_URI']
n'inclut pas le #fragmentObtenir les données après le hachage dans une chaîne de requête est simple. Voici un exemple utilisé lorsqu'un client accède à un glossaire de termes à partir d'un livre. Il prend l'ancre de nom fournie (#tesla), et livre le client à ce terme et met en évidence le terme et sa description en bleu afin qu'il soit facile à voir.
A. configurez vos chaînes avec un identifiant div, de sorte que l'ancre du nom va là où elle est censée et le javascript peut changer les couleurs du texte
B. Utilisez Javascript pour faire le gros travail, côté serveur, inséré dans votre page PHP, ou ailleurs.
C. Je lance automatiquement la fonction java lorsque la page est chargée.
D. obtenir l'ancre (#tesla) à partir de l'url reçue par le serveur
E. couper le signe de hachage
F.Je dois mettre en évidence le terme et la description afin de créer une nouvelle var
G. Maintenant, je peux manipuler la couleur du texte pour le terme et la description
H. Cela fonctionne. le client clique sur le lien côté client (xyz.com # tesla) et passe directement au terme. le terme et la description sont surlignés en bleu par javascript pour une lecture rapide .. toutes les autres entrées sont laissées en noir ..
la source