'custom get query from url function in php
I wrote a function getQuery($param) which returns data from the
function getQuery($param){
if(!empty(parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY))){
$queries = parse_url(strtok($_SERVER['REQUEST_URI'], PHP_URL_QUERY))['query'];
parse_str($queries, $query);
return $query[$param];
}
}
//url = https://example.com/test?name=Arun&[email protected]
echo getQuery("name"); // Output will be:Arun
But if the URL parameters contain "6" this function is only returning query data until that character
//i.e. if URL = https://example.com/test?name=Arun&[email protected]
echo getQuery("email"); // Expected Output: [email protected]
// Original Output: arun05
Is there any solution to fix this bug? Someone, please help
Edit:
Thanks for the reply. I found another method to write this function
<?php
function testgetQuery($param){
$queries = explode("&",explode("?",$_SERVER['REQUEST_URI'])[1]);
$getQuery = [];
foreach($queries as $query){
$getQuery[explode("=", $query)[0]] = explode("=", $query)[1];
}
return $getQuery[$param];
}
This worked pretty well 😄
Solution 1:[1]
First, you must know what exactly your code doing. Like why you need a function to use?
But if the URL parameters contain "6" this function is only returning query data until that character
Why that happened?
By the definition of strtok from w3schools.
The strtok() function splits a string into smaller strings (tokens).
Where the second parameter is used to:
Specifies one or more split characters
So, why the email only returned before the character of "6"?
It is because the value of PHP_URL_QUERY is 6 reference.
So this is like we wrote:
strtok($_SERVER['REQUEST_URI'], 6)
And then from the URL you give, it going to this:
strtok('https://example.com/test?name=Arun&[email protected]', 6)
// You got https://example.com/test?name=Arun&email=arun05
It splitted the URL by the character of 6.
So, for the final words, if you just want to get the query parameter from a URL string. I think it is easy to find already answered questions.
Please check the link below:
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Nur Muhammad |
