Qual é a maneira "menos código necessário" para obter parâmetros de uma string de consulta de URL formatada da seguinte maneira?
www.mysite.com/category/subcategory?myqueryhash
A saída deve ser: myqueryhash
Estou ciente dessa abordagem:
www.mysite.com/category/subcategory?q=myquery
<?php
echo $_GET['q']; //Output: myquery
?>
php
url
query-string
enloz
fonte
fonte
$_SERVER['QUERY_STRING']
vai mostrarfoo=bar2
para consulta string comofoo=bar1&foo=bar2
print_r()
declaração em<pre>
tags:echo '<pre>'.print_r($_SERVER, TRUE).'</pre>';
.$_SERVER['REQUEST_URI']
, embora você possa considerar o uso de mod_rewrite para passar essa parte da URL como uma variável. Veja stackoverflow.com/questions/16388959/url-rewriting-with-phpA maneira do PHP fazer isso é usar a função parse_url , que analisa uma URL e retorna seus componentes. Incluindo a string de consulta.
Exemplo:
Documentação completa aqui
fonte
A função
parse_str()
lê automaticamente todos os parâmetros de consulta em uma matriz.Por exemplo, se o URL for
http://www.example.com/page.php?x=100&y=200
, o códigoirá armazenar parâmetros na
$queries
matriz ($queries['x']=100
,$queries['y']=200
).Veja a documentação de parse_str
EDITAR
De acordo com a documentação do PHP,
parse_str()
só deve ser usado com um segundo parâmetro. O usoparse_str($_SERVER['QUERY_STRING'])
desse URL criará variáveis$x
e$y
, o que torna o código vulnerável a ataques comohttp://www.example.com/page.php?authenticated=1
.fonte
parse_str
, mas, naturalmente, é considerado um não-não.parse_str($_SERVER['QUERY_STRING'], $params);
- agora o$params
array conterá todos os valores da string de consulta.Se você deseja toda a cadeia de consulta:
fonte
Vou recomendar a melhor resposta como
<?php echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!'; ?>
Supondo que o usuário inseriu http://example.com/?name=Hannes
O exemplo acima apresentará:
Olá Hannes!
fonte
example.com/?Hannes
...Além disso, se você estiver procurando pelo nome do arquivo atual junto com a string de consulta, precisará apenas seguir
Forneceria informações como exemplo a seguir
E se você também quiser o caminho completo do arquivo, começando pelo root, por exemplo, /folder/folder2/file.php?arg1=val&arg2=val, remova a função basename () e use o preenchimento
fonte
/
é um caractere válido nas cadeias de consulta (consulte RFC 3986 ), portanto você não pode confiarbasename
.Aqui está minha função para reconstruir partes da string de consulta do REFERRER .
Se a página de chamada já tiver uma string de consulta em seu próprio URL , e você deverá voltar a essa página e desejar enviar alguns, não todos, esses
$_GET
vars (por exemplo, um número de página).Exemplo: a string de consulta do referenciador estava
?foo=1&bar=2&baz=3
chamandorefererQueryString( 'foo' , 'baz' )
retornosfoo=1&baz=3"
:fonte
Este código e notação não é meu. Evan K resolve uma consulta de mesmo valor com uma função personalizada;) é obtida de:
http://php.net/manual/en/function.parse-str.php#76792 Os créditos são para Evan K.
É importante mencionar que o parse_str interno NÃO processa uma sequência de consultas da maneira padrão CGI, quando se trata de campos duplicados. Se vários campos com o mesmo nome existirem em uma string de consulta, todas as outras linguagens de processamento da Web os lerão em uma matriz, mas o PHP os substituirá silenciosamente:
fonte
Graças a @K. Shahzad Isso ajuda quando você deseja que a string de consulta reescrita sem nenhuma adição de reescrita. Digamos que você reescreva o / test /? X = y em index.php? Q = teste & x = y e você deseja apenas a string de consulta.
fonte
Linguagem de programação: PHP
Isso funcionou para mim. Espero que também ajude você :)
fonte
Para obter cada nó no URI, você pode usar a função
explode()
para $ _SERVER ['REQUEST_URI']. Se você deseja obter strings sem saber se foi aprovado ou não. você pode usar a função que eu me defini para obter parâmetros de consulta de $ _REQUEST (pois funciona para os parâmetros POST e GET).Pode haver alguns casos em que queremos que os parâmetros da consulta sejam convertidos no tipo Inteiro, então adicionei o terceiro parâmetro a essa função.
fonte