¿Cómo puedo seleccionar el fragmento después del símbolo '#' en mi URL usando PHP?
El resultado que quiero es "photo45".
Esta es una URL de ejemplo:
http://example.com/site/gallery/1#photo45
php
url
anchor
url-fragment
ilija veselica
fuente
fuente
Respuestas:
Si desea obtener el valor después de la marca de almohadilla o del ancla como se muestra en el navegador de un usuario: esto no es posible con HTTP "estándar" ya que este valor nunca se envía al servidor (por lo tanto, no estará disponible en
$_SERVER["REQUEST_URI"]
o similar variables predefinidas). Necesitaría algún tipo de magia de JavaScript en el lado del cliente, por ejemplo, para incluir este valor como un parámetro POST.Sin embargo, si solo se trata de analizar una URL conocida de cualquier fuente, la respuesta de mck89 está perfectamente bien.
fuente
alert(window.location.hash);
window.location.hash
obtiene el fragmento completo INCLUYENDO el#
signo [hash] ... y está, por supuesto, 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); });
... dependiendo del "método" de su formulario, obtiene el hash por$_POST['fragment']
o$_GET['fragment']
.... ¡MAGIC!Esa parte se llama "fragmento" y puede obtenerla de esta manera:
fuente
$fragment = parse_url("http://example.com/site/gallery/1#photo45", PHP_URL_FRAGMENT);
A) ¿ya tienes una URL con #hash en PHP? ¡Fácil! ¡Solo analícelo!
O en PHP "antiguo" debe pre-almacenar el explotado para acceder a la matriz:
B) ¿Quieres obtener un #hash enviando un formulario a PHP?
=> ¡Usa algo de MAGIA JavaScript! (Para procesar previamente el formulario)
Dependiendo de sus
form
'smethod
atributo se obtiene este hash en PHP por:$_GET['fragment']
o$_POST['fragment']
Retornos posibles: 1.
""
[cadena vacía] (sin hash) 2. hash completo INCLUYENDO el#
signo [hash] (porque hemos usadowindow.location.hash
en JavaScript que simplemente funciona de esa manera :))C) ¿Quiere obtener el #hash en PHP SOLO de la URL solicitada?
¡NO PUEDES!
... (no teniendo en cuenta las solicitudes HTTP regulares) ...
... Espero que esto haya ayudado :)
fuente
He estado buscando una solución para esto durante un tiempo, y lo único que he encontrado es usar reescrituras de URL para leer el "ancla". Encontré en los documentos de Apache aquí http://httpd.apache.org/docs/2.2/rewrite/advanced.html lo siguiente ...
Puede tener otras advertencias y otras cosas ... pero creo que al menos es posible hacer algo con el # en el servidor.
fuente
No puede obtener el texto después de la marca de almohadilla . No se envía al servidor en una solicitud.
fuente
Encontré este truco si insistes en querer el valor con PHP. divida el
#
valor de anchor ( ) y consígalo con JavaScript, luego guárdelo como cookie, luego obtenga el valor de cookie con PHPfuente
Puede hacerlo mediante una combinación de javascript y php:
Y por el otro lado;
Luego, al enviar el formulario, puede recuperar el valor a través de $ _POST ['hash'] (establecer el formulario)
fuente
Si desea obtener dinámicamente el hash de la URL, esto debería funcionar: https://stackoverflow.com/a/57368072/2062851
fuente
Primero debe analizar la URL, por lo que es así:
Si necesita analizar la URL real del navegador actual, debe solicitar llamar al servidor.
fuente
$_SERVER['REQUEST_URI']
no no incluye el #fragmentObtener los datos después de la marca de almohadilla en una cadena de consulta es simple. A continuación, se muestra un ejemplo que se utiliza cuando un cliente accede a un glosario de términos de un libro. Toma el ancla de nombre entregado (#tesla), entrega al cliente ese término y resalta el término y su descripción en azul para que sea fácil de ver.
A. configure sus cadenas con un id div, por lo que el nombre del ancla va donde se supone que debe y el javascript puede cambiar los colores del texto
B. Utilice Javascript para hacer el trabajo pesado, en el lado del servidor, insertado en su página PHP o donde sea.
C. Estoy iniciando la función Java automáticamente cuando se carga la página.
D. obtener el ancla (#tesla) de la URL recibida por el servidor
E. recortar el signo de almohadilla
F. Necesito resaltar el término y la descripción para crear una nueva var
G. Ahora puedo manipular el color del texto del término y la descripción
H. Esto funciona. el cliente hace clic en el enlace del lado del cliente (xyz.com # tesla) y va directamente al término. el término y la descripción están resaltados en azul por javascript para una lectura rápida .. todas las demás entradas quedan en negro ..
fuente