PHP kullanarak bir URL'den GET özelliğini şerit nasıl

5 Cevap

Ben Geçerli sayfayı URL var olsun Aşağıdaki işlevi vardır:

<?php

    // get current page url
    function currentPageUrl() {

        $pageURL = 'http';

        if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}

        $pageURL .= "://";

        if ($_SERVER["SERVER_PORT"] != "80") {
            $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
        }
        else {
            $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
        }


        echo $pageURL;

    }

?>

Hangi baskılar:

http://localhost/gallery.php?id=23&type=main

Ben kaldır "& = ana yazın" url mevcut olduğu istiyorum. Yani $ PAGEURL yankılanan önce aşağıdaki satırı ekleyin:

$pageUrl = preg_replace("&type=main", "", $pageURL);

Ama yine type = ana da dahil olmak üzere tam url döndürür. Nasıl url o kurtulabilirim?

5 Cevap

: Başka bir çözelti olabilir

  • bir dize olarak parse_url or $_SERVER['QUERY_STRING'] parametrelerin listesini çıkarmak için kullanabilirsiniz
  • parametreler isimlerle endeksli - parse_str her parametre ve değerini içeren bir diziye sorgu dizesi dönüştürmek için kullanın.
  • Do some magic on that array :
    • Eğer bunu filtrelemek için ne yapmak
    • Örneğin, unset($array['type']); muhtemelen yardımcı olabilir ;-)
    • Gerekirse, bu diziye daha fazla parametre eklemek
  • Ve sonra, http_build_query yeniden inşa, bir sorgu dizesi için kullanın.


A bit more complex than string manipulations, of course -- but much more reliable, I'd say ;-)

Sen parse_url içine url atabilir. Bu uygun gördüğünüz gibi yeniden hangi bir dizi döndürür.

Bu deneyin:

$pageUrl = str_replace('&type=main', '', $pageURL);

did you try any other $_SERVER variables?
there are plenty and some of them already contain everything you need without any replace

phpinfo(32);

Size tüm gösterecektir

PHP tanımlayıcılardır harf duyarlıdır. Muhtemelen aynı değişkene atamak için geliyordu.

$pageURL = preg_replace("&type=main", "", $pageURL);

Bu, ya $pageUrl yerine $pageURL kullanımı kod kalıntısı değiştirmek gerekir ya.