无需Get或POST即可获取url信息


Get url information without GET or POST

我有这个URL

http://www.mywebsite.com/person?id=10

但是我不想要$_GET变量。我想要这样:

http://www.mywebsite.com/person/10

您可以使用$_SERVER['REQUEST_URI']你可以从"人"(如果这将被修复)爆炸

$uri_parts = explode('person', $_SERVER['REQUEST_URI'], 2);
echo $uri_parts[1]; // will return /10

下面是一个方便的小函数,您可以在这种情况下使用。您可能需要在此处测试代码。

<?php
    $currentURL = getCurrentPageURL();   //<= GET THE ACTIVE PAGE URL
    $cleanURL   = getPreFormattedURI($currentURL);
    var_dump($cleanURL);
    // FUNCTION TO AUTOMATICALLY GET THE ACTIVE PAGE URL
    function getCurrentPageURL() {
        $pageURL = 'http';
        if ((isset($_SERVER["HTTPS"])) && ($_SERVER["HTTPS"] == "on")) {
            $pageURL .= "s";
        }
        $pageURL .= "://";
        if ($_SERVER["SERVER_PORT"] != "80") {
            $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"];
        }else {
            $pageURL .= $_SERVER["SERVER_NAME"];
        }
        $pageURL .= $_SERVER["REQUEST_URI"];
        return $pageURL;
    }
    // FUNCTION THAT FORMATS THE URL THE WAY YOU SPECIFIED
    function getPreFormattedURI($uri, $key="id"){
        $objStripped            = new stdClass();
        $objParsedQuery         = new stdClass();
        if(!stristr($uri, "?")){
            $objStripped->M     = $uri;
            $objStripped->Q     = null;
        }else{
            $arrSplit           = preg_split("#'?#", $uri);
            $objStripped->M     = $arrSplit[0];
            $objStripped->Q     = $arrSplit[1];
        }
        $cleanURL               = $objStripped->M;
        if($objStripped->Q){
            $arrSplit       = preg_split("#['?'&]#", $objStripped->Q);
            if(!empty($arrSplit) && count($arrSplit)>0 ) {
                foreach ($arrSplit as $queryKVPair) {
                    preg_match("#(.*)('=)(.*)#", $queryKVPair, $matches);
                    list($fullNull, $key, $null, $value) = $matches;
                    $objParsedQuery->$key = $value;
                    $cleanURL  .=  "/" . $value;
                }
            }
            $objStripped->Q = $objParsedQuery;
        }
        return $cleanURL;
    }