2010-06-03 56 views
2

我想開發一個PHP類,使我能夠將查詢字符串添加到url中並根據傳遞的變量處理它。如何才能做到這一點?如何獲取和檢查附加到URL中的查詢字符串? PHP

www.example.com?var1=a&var2=b&var3=c 

現在我想?var1=a&var2=b&var3=c部分並處理它基於變量。

感謝您的答覆

,但我想,我可以得到整個查詢字符串,因爲我不會是肯定會被髮送到URL中的變量名因此$ _ GET方法不會正常工作的一種手段。

由於在 http://php.net/manual/en/reserved.variables.get.php

+1

你說的是與您(從例如數據庫)訪問字符串中包含您的網站或網址的網址嗎? – 2010-06-03 10:58:18

+0

我正在討論用於訪問您的網站的網址。 – 2010-06-03 11:10:55

回答

3

$_SERVER['QUERY_STRING'] 

但是,我不知道如何將比$_GET更有用。你說:

我不會是肯定的變量名的

您可以通過$_GET陣列與foreach循環迭代:

foreach ($_GET as $key => $val) { 
    echo $key . ": " . $val; 
} 

但是......如果你是談論任意 URL(不一定是被請求的URL),那麼上述方法將不起作用,因爲它們顯然不會在$_GET中。相反,你可以使用parse_url

$url = 'http://username:[email protected]/path?arg=value#anchor'; 

print_r(parse_url($url)); 

echo parse_url($url, PHP_URL_QUERY); 

輸出:

Array 
(
    [scheme] => http 
    [host] => hostname 
    [user] => username 
    [pass] => password 
    [path] => /path 
    [query] => arg=value 
    [fragment] => anchor 
) 
arg=value 
+0

+1的真棒品種介紹。這應該做OP的要求和更多。我忘記了提到的幾個選項。 – Joseph 2010-06-03 13:33:30

+0

非常感謝您的回答。 – 2010-06-07 08:37:30

4
// 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"; 
} 

更多信息,如果您有存儲在一個變量的參數,然後用parse_str。例如:

$str = 'var1=a&var2=b&var3=c'; 
parse_str($str); 
echo $var1; 
+0

但不要忘記htmlspecialchars()$ _GET,否則人們可以使用xss來「破解」您的網站或使用它的壞東西:) – ahmet2106 2010-06-03 11:03:26

0

這裏的功能是一個簡約的類,應該工作,但沒有測試。

<?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'); 
} 
?> 

希望如果你想訪問網址參數,就可以使用這個字符串,幫助 艾哈邁德