Como posso selecionar o fragmento após o símbolo '#' em meu URL usando PHP?
O resultado que eu quero é "photo45".
Este é um exemplo de URL:
http://example.com/site/gallery/1#photo45
php
url
anchor
url-fragment
ilija veselica
fonte
fonte
Respostas:
Se você deseja obter o valor após a marca de hash ou âncora conforme mostrado no navegador de um usuário: Isso não é possível com HTTP "padrão", pois este valor nunca é enviado ao servidor (portanto, não estará disponível em
$_SERVER["REQUEST_URI"]
ou semelhante variáveis predefinidas). Você precisaria de algum tipo de mágica do JavaScript no lado do cliente, por exemplo, incluir esse valor como um parâmetro POST.Se for apenas sobre como analisar um URL conhecido de qualquer fonte, a resposta de mck89 é perfeitamente correta .
fonte
alert(window.location.hash);
window.location.hash
fornece o fragmento inteiro INCLUINDO o#
sinal de [hash] ... e é, claro, em 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); });
... dependendo do "método" do seu formulário, você obtém o hash por$_POST['fragment']
ou$_GET['fragment']
.... MAGIC!Essa parte é chamada de "fragmento" e você pode obtê-la desta forma:
fonte
$fragment = parse_url("http://example.com/site/gallery/1#photo45", PHP_URL_FRAGMENT);
A) já tem url com #hash no PHP? Fácil! Basta analisar!
Ou no PHP "antigo" você deve pré-armazenar o explodido para acessar o array:
B) Você deseja obter um #hash enviando um formulário para o PHP?
=> Use um pouco de JavaScript MAGIC! (Para pré-processar o formulário)
Dependendo de suas
form
'smethod
atribuem você receber esse hash em PHP por:$_GET['fragment']
ou$_POST['fragment']
Possíveis retornos: 1.
""
[string vazia] (sem hash) 2. hash inteiro INCLUINDO o#
sinal [hash] (porque usamoswindow.location.hash
no JavaScript, que funciona dessa maneira :))C) Você deseja obter o #hash no PHP APENAS da URL solicitada?
VOCÊ NÃO PODE!
... (não ao considerar solicitações HTTP regulares) ...
... Espero que tenha ajudado :)
fonte
Eu estive procurando por uma solução alternativa para isso - e a única coisa que encontrei é usar reescritas de URL para ler a "âncora". Encontrei na documentação do Apache aqui http://httpd.apache.org/docs/2.2/rewrite/advanced.html o seguinte ...
Pode haver outras ressalvas e quais não ... mas acho que pelo menos fazer algo com o # no servidor é possível.
fonte
Você não pode obter o texto após a marca de hash . Ele não é enviado ao servidor em uma solicitação.
fonte
Encontrei esse truque se você insiste em querer o valor com PHP. divida o
#
valor anchor ( ) e obtenha-o com JavaScript, depois armazene como cookie, depois obtenha o valor do cookie com PHPfonte
Você pode fazer isso por uma combinação de javascript e php:
E do outro lado;
Então, no envio do formulário, você pode recuperar o valor via $ _POST ['hash'] (definir o formulário)
fonte
Se você deseja obter dinamicamente o hash do URL, isso deve funcionar: https://stackoverflow.com/a/57368072/2062851
fonte
Você precisa analisar o url primeiro, então é assim:
Se você precisar analisar o url real do navegador atual, será necessário solicitar a chamada do servidor.
fonte
$_SERVER['REQUEST_URI']
que não incluem o #fragmentObter os dados após o hashmark em uma string de consulta é simples. Aqui está um exemplo usado para quando um cliente acessa um glossário de termos de um livro. Ele pega o nome âncora entregue (#tesla) e entrega o cliente a esse termo e destaca o termo e sua descrição em azul para que seja fácil de ver.
A. configurar suas strings com um id div, para que o nome âncora vá para onde deveria e o javascript pode alterar as cores do texto
B. Use Javascript para fazer o trabalho pesado, no lado do servidor, inserido em sua página PHP, ou onde quer que ..
C. Estou iniciando a função java automaticamente quando a página é carregada.
D. obter a âncora (#tesla) do url recebido pelo servidor
E. aparar o sinal de hash dele
F. Preciso destacar o termo e a descrição para criar uma nova var
G. Agora posso manipular a cor do texto para o termo e a descrição
H. Isso funciona. o cliente clica no link do lado do cliente (xyz.com # tesla) e vai direto ao termo. o termo e a descrição são destacados em azul por javascript para uma leitura rápida .. todas as outras entradas deixadas em preto ..
fonte