I am trying to develop a PHP class which would enable me to get the query string appended into a url and process it according to the variables passed. How can this be done?
Use $_GET
Here is a minimalistic class. It should work, but it is not tested.
<?php
class URLHandler
{
public $get;
public function __construct( $get );
{
$this->get = $get;
}
public function get_var( $var )
{
return htmlspecialchars( $this->get[$var] );
}
public function check_var( $var, $is )
{
if( $this->get_var( $var ) == $is )
{
return true;
}
else
{
return false;
}
}
}
// Below is how you can use this class
$URL = new URLHandler( $_GET );
if( $URL->check_var( 'var1', 'a' ) )
{
echo 'yes your first var is a';
// Here you can add a function or functions which should be loaded if var1 = a
}
else
{
echo 'No, your first var is not a, its '.$URL->get_var( 'var2' );
// Here you can add a function or functions which should be loaded if var1 is not a
}
if( $URL->check_var( 'var2', 'a' ) )
{
echo 'and your second var is a';
}
else
{
echo 'your second var is not a, its '.$URL->get_var( 'var2' );
}
?>
http_build_query is the function you're probably looking for
If you want access to the URL parameters as a string you can use this:
$_SERVER['QUERY_STRING']
But, I'm not sure how that would be any more useful than $_GET
. You said:
I wont be sure of the variable names
You can iterate through the $_GET
array with a foreach
loop:
foreach ($_GET as $key => $val) {
echo $key . ": " . $val;
}
However... if you're talking about an arbitrary URL (not necessarily the one which was requested), then the above methods won't work since they obviously won't be in $_GET
. Instead you can use parse_url
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_QUERY);
Output:
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
arg=value
// Current URL: www.example.com?var1=a&var2=b&var3=c
function handleUrl()
{
$var1 = $_GET['var1']; // now contains 'a'
$var2 = $_GET['var2']; // now contains 'b'
$var3 = $_GET['var3']; // now contains 'c'
return "Querystring now contains $var1 $var2 and $var3";
}
More information at http://php.net/manual/en/reserved.variables.get.php
If you have the parameters stored in a variable, then use parse_str. Example:
$str = 'var1=a&var2=b&var3=c';
parse_str($str);
echo $var1;