Como usar parse_str em PHP
Neste artigo, exploraremos a parse_str
função em PHP. É usado para converter uma string de consulta de solicitação GET em variáveis utilizáveis.
No desenvolvimento diário de PHP, você geralmente precisa lidar com strings de consulta – a maneira como os dados são passados para o seu script na URL em uma solicitação GET. Quando uma string de consulta é passada na URL, o PHP fornece a variável superglobal$_GET
contendo todos os parâmetros de consulta como variáveis PHP, para que você possa ler facilmente os parâmetros disponíveis na string de consulta. No entanto, às vezes você precisa processar uma string de consulta bruta e convertê-la em variáveis.
No PHP, existem algumas maneiras diferentes de fazer isso. Você pode usar a explode
função para dividir a string de consulta pelo &
caractere e, em seguida, novamente pelo =
caractere. Mas há uma maneira ainda mais fácil: o PHP fornece a parse_str
função, que permite analisar a string de consulta em uma única chamada.
Hoje, vamos discutir a parse_str
função em detalhes junto com alguns exemplos do mundo real.
Sintaxe: a parse_str
função
Vamos dar uma olhada na sintaxe da parse_str
função:
1
|
parse_str (string $string , array & $result ): void |
Como você pode ver, parse_str
leva dois argumentos. O primeiro argumento é a string de entrada e espera-se que esteja no formato de string de consulta : por exemplo. name=wilson&color=blue
.
O segundo argumento é uma matriz que será preenchida pelas variáveis analisadas da string de consulta.
É importante notar que a parse_str
função não retorna nada, então você deve usar o segundo argumento para inicializar o resultado desta função. Até o PHP 7.2, o segundo argumento era opcional, e sua omissão dizia parse_str
para retornar os valores de resultado como variáveis no escopo local, mas a partir do PHP 7.2 este é um argumento obrigatório.
Além disso, a parse_str
função sempre decodifica variáveis codificadas por URL, portanto, você não precisa usar a urldecode
função . Além disso, se você tiver uma string de consulta de entrada muito longa, pode gerar o input variables exceeded X
erro. Nesse caso, verifique o max_input_vars
valor de configuração em seu arquivo de configuração php.ini e ajuste-o de acordo com seus requisitos.
Vejamos alguns exemplos do mundo real na próxima seção.
Exemplos do mundo real de parse_str
Nesta seção, veremos alguns exemplos do mundo real para demonstrar como usar a parse_str
função.
Um exemplo simples
Vamos começar com um exemplo simples, conforme mostrado no trecho a seguir.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
<?php $string = 'first_name=John&last_name=Richards&age=30' ; parse_str ( $string , $result ); print_r( $result ); /** Output: Array ( [first_name] => John [last_name] => Richards [age] => 30 ) **/ |
Como você pode ver, a parse_str
função analisa a $string
string de consulta e $result
é preenchida com uma matriz. Os nomes das variáveis são convertidos em chaves de array e os valores das variáveis são atribuídos às chaves de array correspondentes.
Exemplo com uma matriz
Freqüentemente, a string de consulta de entrada pode conter variáveis de matriz, e a parse_str
função pode detectá-la e convertê-la nas variáveis de matriz correspondentes.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
<?php $string = 'foo=1&bar[]=1&bar[]=2' ; parse_str ( $string , $result ); print_r( $result ); /** $result Output: Array ( [foo] => 1 [bar] => Array ( [0] => 1 [1] => 2 ) ) **/ |
Como você pode ver no exemplo acima, a bar
variável contém vários valores na string de consulta de entrada e é convertida na $result['bar']
matriz correspondente, conforme mostrado na saída.
Tenha cuidado, se você não usar a []
sintaxe especial após variáveis de array, parse_str
irá tratá-la como uma variável regular e manterá apenas o último valor na string. Isso funciona de maneira um pouco diferente para a maioria dos analisadores de string de consulta.
Exemplo com caracteres especiais
Às vezes, a string de consulta de entrada contém espaços e pontos como parte dos nomes das variáveis. No entanto, o PHP não permite espaços e pontos em nomes de variáveis e, portanto, eles são automaticamente convertidos em sublinhados pela parse_str
função.
Vamos dar uma olhada no exemplo a seguir para entender como funciona.
01
02
03
04
05
06
07
08
09
10
11
12
|
<?php parse_str ( $string , $result ); print_r( $result ); /** $result Output: Array ( [my_name] => John [my_email] => [email protected] ) **/ |
Se você notou, os caracteres de espaço e ponto nas variáveis de string de consulta de entrada são substituídos pelo caractere sublinhado ( _
) nas chaves de array.
Exemplo com valores codificados por URL
Como discutimos anteriormente, a parse_str
função sempre decodifica valores codificados por URL durante a análise. Isso significa que você não precisa aplicar a urldecode
função separadamente .
Aqui está um exemplo com alguns valores codificados por URL.
01
02
03
04
05
06
07
08
09
10
11
12
|
<?php $string = 'name=John%20Richards&profile_url=http%3A%2F%2Fexample.com%2Fmyprofile' ; parse_str ( $string , $result ); print_r( $result ); /** $result Output: Array ( [name] => John Richards [profile_url] => https://example.com/myprofile ) **/ |
Como você pode ver, os caracteres codificados por URL são convertidos automaticamente em seus caracteres correspondentes.
Conclusão
Hoje, discutimos a parse_str
função em PHP que é útil para converter uma string de consulta em variáveis. Espero que seja útil em sua própria codificação PHP!