Nasıl bir url içine eklenen sorgu dizesini almak ve disect için?

5 Cevap

Ben bir url içine eklenen sorgu dizesini almak için bana olanak ve geçti değişkenlere göre işlemek istiyorum bir PHP sınıfı geliştirmeye çalışıyorum. Bu nasıl yapılabilir?

Örn

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

şimdi ben ?var1=a&var2=b&var3=c bölümü ve değişkenlere dayalı bir süreç almak istiyorum.

Yanıtları için teşekkürler

ama ben $ _GET yöntem alışkanlık düzgün çalışması böylece URL içine gönderilecek değişken adları emin olmayacak çünkü ben bütün sorgu dizesini almak hangi bir araç istiyorum.

Teşekkürler

5 Cevap

Bir dize olarak URL parametrelerine erişmek istiyorsanız bunu kullanabilirsiniz:

$_SERVER['QUERY_STRING']

Ama, ben bu $_GET daha başka yararlı olacağını nasıl emin değilim. Dedin:

Ben değişken adları emin olmayacak

Bir foreach döngü ile $_GET dizi yineleme yapabilirsiniz:

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

Bir arbitrary URL (istenen ille bir) bahsediyoruz eğer onlar tabii ki olmayacak yana ... Ancak, daha sonra yukarıdaki yöntemler işe yaramaz {[(1) }]. Bunun yerine parse_url kullanabilirsiniz

$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_QUERY);

Çıktı:

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

Kullan $_GET

http_build_query muhtemelen aradığınız işlevi

Burada bir minimalist Sınıfı, çalışmak, ancak test edilmemelidir.

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

Hope that helps Ahmet