¿Cuál es la forma de "menos código necesario" para obtener parámetros de una cadena de consulta de URL con el siguiente formato?
www.mysite.com/category/subcategory?myqueryhash
La salida debe ser: myqueryhash
Soy consciente de este enfoque:
www.mysite.com/category/subcategory?q=myquery
<?php
echo $_GET['q']; //Output: myquery
?>
php
url
query-string
enloz
fuente
fuente
$_SERVER['QUERY_STRING']
apareceráfoo=bar2
para la cadena de consulta comofoo=bar1&foo=bar2
print_r()
declaración en<pre>
las etiquetas:echo '<pre>'.print_r($_SERVER, TRUE).'</pre>';
.$_SERVER['REQUEST_URI']
, aunque es posible que desee considerar el uso de mod_rewrite para pasar esa parte de la URL como una variable. Ver stackoverflow.com/questions/16388959/url-rewriting-with-phpLa manera de hacerlo en PHP es usando la función parse_url , que analiza una URL y devuelve sus componentes. Incluyendo la cadena de consulta.
Ejemplo:
Documentación completa aquí
fuente
La función
parse_str()
lee automáticamente todos los parámetros de consulta en una matriz.Por ejemplo, si la URL es
http://www.example.com/page.php?x=100&y=200
, el códigoalmacenará parámetros en la
$queries
matriz ($queries['x']=100
,$queries['y']=200
).Mira la documentación de parse_str
EDITAR
De acuerdo con la documentación de PHP,
parse_str()
solo debe usarse con un segundo parámetro. El usoparse_str($_SERVER['QUERY_STRING'])
de esta URL creará variables$x
y$y
, lo que hace que el código sea vulnerable a ataques comohttp://www.example.com/page.php?authenticated=1
.fuente
parse_str
, pero naturalmente, se considera un no-no.parse_str($_SERVER['QUERY_STRING'], $params);
- ahora la$params
matriz contendrá todos los valores de la cadena de consulta.Si desea toda la cadena de consulta:
fuente
Recomendaré la mejor respuesta como
<?php echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!'; ?>
Suponiendo que el usuario ingresó http://example.com/?name=Hannes
El ejemplo anterior generará:
Hola hannes
fuente
example.com/?Hannes
...Además, si está buscando el nombre del archivo actual junto con la cadena de consulta, solo necesitará seguir
Le proporcionaría información como el siguiente ejemplo
Y si también desea la ruta completa del archivo a partir de la raíz, por ejemplo /folder/folder2/file.php?arg1=val&arg2=val, simplemente elimine la función basename () y simplemente use el relleno
fuente
/
es un carácter válido en las cadenas de consulta (consulte RFC 3986 ), por lo que no puede confiarbasename
.Aquí está mi función para reconstruir partes de la cadena de consulta del REFERENTE .
Si la página que realiza la llamada ya tenía una cadena de consulta en su propia URL , y debe volver a esa página y desea devolver algunos, no todos, de esos
$_GET
vars (por ejemplo, un número de página).Ejemplo: la cadena de consulta del referente estaba
?foo=1&bar=2&baz=3
llamandorefererQueryString( 'foo' , 'baz' )
devolucionesfoo=1&baz=3"
:fuente
Este código y notación no es mía. Evan K resuelve una consulta del mismo nombre con varios valores con una función personalizada;) se toma de:
http://php.net/manual/en/function.parse-str.php#76792 Los créditos van a Evan K.
Vale la pena mencionar que parse_str incorporado NO procesa una cadena de consulta en la forma estándar CGI, cuando se trata de campos duplicados. Si existen varios campos del mismo nombre en una cadena de consulta, cualquier otro lenguaje de procesamiento web los leería en una matriz, pero PHP los sobrescribe en silencio:
fuente
Gracias a @K. Shahzad Esto ayuda cuando desea la cadena de consulta reescrita sin ninguna adición de reescritura. Digamos que reescribe / test /? X = y en index.php? Q = test & x = y y solo desea la cadena de consulta.
fuente
Lenguaje de programación: PHP
Esto funcionó para mí. Espero que también te ayude :)
fuente
Para obtener cada nodo en el URI, puede usar la función
explode()
para $ _SERVER ['REQUEST_URI']. Si desea obtener cadenas sin saber si se pasa o no. puede usar la función que me definí para obtener parámetros de consulta de $ _REQUEST (ya que funciona tanto para los parámetros POST como GET).Puede haber algunos casos en los que queremos obtener parámetros de consulta convertidos al tipo Integer, por lo que agregué el tercer parámetro a esta función.
fuente