¿Cómo puedo obtener el fragmento (valor después de hash '#') desde una URL en php?fragmento (valor después de hash '#') desde una URL en php
decir, desde http://domain.com/site/gallery/1#photo45
Quiero photo45
¿Cómo puedo obtener el fragmento (valor después de hash '#') desde una URL en php?fragmento (valor después de hash '#') desde una URL en php
decir, desde http://domain.com/site/gallery/1#photo45
Quiero photo45
Si desea obtener el valor después del signo de número o de anclaje como se muestra en el navegador del usuario: Esto no es t es posible con "estándar" HTTP ya que este valor nunca se envía al servidor (por lo tanto no estará disponible en $_SERVER["REQUEST_URI"]
o similares variables predefinidas). Necesitarías algún tipo de magia JavaScript en el lado del cliente, p. para incluir este valor como un parámetro POST.
Si es sólo acerca de analizar una dirección URL de cualquier fuente conocida, la answer by mck89 está perfectamente bien sin embargo.
'alerta (window.location.hash);' – sfussenegger
solo una nota: 'window.location.hash' te da el fragmento completo INCLUYENDO el signo' # '[hash] ... y está, por supuesto, en JavaScript :) –
BTW: magia de JavaScript: D: D: D: D: D ... 'var forms = document.getElementsByTagName ('form'); for (var i = 0; i
No se puede obtener el texto después de la marca de hash . No se envía al servidor en una solicitud.
Esa parte se llama "fragmento" y se puede obtener de esta manera:
$url=parse_url("http://domain.com/site/gallery/1#photo45 ");
echo $url["fragment"]; //This variable contains the fragment
Eso es muy bueno, pero hubiera sido sin ningún error si agregas '' '$ fragment = isset ($ url ['fragment'])? '#'. $ url ['fragment']: ''; '' '¡Pero aún así, pulgares arriba! –
me encontré con este truco, si u insisten en el valor que desee con php .. dividir el valor (#) de anclaje y hacerlo con javascript, a continuación, almacenar como galleta, después de que obtener el valor de la cookie con php ~
http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
He estado buscando una solución para esto por un tiempo, y lo único que he encontrado es utilizar las reescrituras URL para leer el "anclaje". He encontrado en la documentación de Apache aquí http://httpd.apache.org/docs/2.2/rewrite/advanced.html la siguiente ...
Por defecto, volver a dirigir a un ancla HTML no funciona, porque mod_rewrite escapa el carácter #, convirtiéndola en 23%. Esto, a su vez, rompe la redirección.
Solución: Utilice el [NE] bandera en el RewriteRule. NE significa No Escape.
Discusión: Esta técnica también funcionará, por supuesto, con otros caracteres especiales que mod_rewrite, de forma predeterminada, codifican URL.
Puede tener otras salvedades y qué no ... pero creo que al menos hacer algo con el # en el servidor es posible.
if(strpos($url, "#") === false) echo "NO HASH !";
else echo "HASH IS: #".explode("#", $url)[1]; // arrays are indexed from 0
O en el "viejo" PHP es necesario pre-almacenar el explotado para acceder a la matriz:
$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
});
Dependiendo de sus form
's method
atribuye a obtener este hash en PHP por: $_GET['fragment']
o $_POST['fragment']
rendimientos posibles: 1.""
[vacía string] (sin hash) 2. hash completo INCLUYENDO el #
[hash] signo (porque hemos utilizado el window.location.hash
en JavaScript que simplemente funciona de esa manera :))
... (no teniendo en cuenta las peticiones HTTP normales) ...
... Espero que esto ayudó :)
que podría hacer una cadena reemplazar en el lado del cliente, entonces el lado del servidor. No es una solución particularmente robusta, pero si no quieres una solución rápida como yo, será suficiente, creo.
Cliente:
Servidor:
$user_message = $_GET['userMessage'];
$user_message = str_replace("hashtag", "#", $user_message);
Obtención de los datos después de la hashmark en una cadena de consulta es simple. Aquí hay un ejemplo utilizado para cuando un cliente accede a un glosario de términos de un libro. Toma el nombre de anclaje entregado (#tesla) y 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. configurar sus cuerdas con un ID de div, por lo que el nombre de ancla va donde su supone que el código JavaScript y puede cambiar los colores del texto
<div id="tesla">Tesla</div>
<div id="tesla1">An energy company</div>
B. Uso de Javascript para hacer el trabajo pesado, en el del lado del servidor, insertada en su página PHP, o donde sea ..
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
C. estoy lanzando la función de java de forma automática cuando se carga la página.
<script>
$(document).ready(function() {
D.obtener el ancla (#tesla) de la URL recibida por el servidor
var myhash1 = $(location).attr('hash'); //myhash1 == #tesla
E. recortar el signo numeral fuera de ella
myhash1 = myhash1.substr(1) //myhash1 == tesla
F. necesito para resaltar el plazo y la descripción, así que crear una nueva var
var myhash2 = '1';
myhash2 = myhash1.concat(myhash2); //myhash2 == tesla1
G. Ahora puede manipular el color del texto para el término y la descripción
var elem = document.getElementById(myhash1);
elem.style.color = 'blue';
elem = document.getElementById(myhash2);
elem.style.color = 'blue';
});
</script>
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 ...
Esta respuesta solo trata con el manejo del fragmento por parte del cliente, mientras que la pregunta es sobre el lado del servidor (con PHP). –
con la configuración del lado del cliente correctamente, entonces el lado del servidor es fácil con PHP. –
@ile http://en.wikipedia.org/wiki/Hash_symbol –
Duplicado o al menos en el mismo líneas como http://stackoverflow.com/questions/1957030/retrieve-the-hash-in-the-url-with-php, http://stackoverflow.com/questions/1162008/php-hash-fragment-portion- of-url y http://stackoverflow.com/questions/2181290/php-zend-framework-how-to-get-request-uri-fragment-from-request-object – Gordon
posible duplicado de [Cómo obtener el valor después el hash en "somepage.php # name"?] (http://stackoverflow.com/questions/1917762/how-to-get-the-value-after-the-hash-in-somepage-phpname) – PhoneixS