2016-07-20 3 views
-1

У меня есть этот URLПолучить URL информации без GET или POST

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

, но я не хочу, $_GET переменной. Я хочу, чтобы это так:

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

+3

Вы должны искать учебник по URL переписывания – AntoineB

+1

перезаписи URL правильный ответ, однако, обратите внимание, что он работает только в одном направлении: пользователь вводит «example.com/person/10» и рерайт изменит его на "example.com/person?id=10" –

+1

Возможный дубликат [переписывание URL с PHP] (http://stackoverflow.com/questions/16388959/url-rewriting-with-php) – Draken

ответ

0

Вы можете использовать $ _SERVER [ 'REQUEST_URI'] и вы можете взорваться от "человека" (если это будет исправить)

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

_will return 10_ ... Нет, он возвращает **/10 ** –

+0

Да, именно это вернет, но @Allamanda хочет вычитать значение из URL без использования функции GET после значения захвата, может фильтровать это из косой черты и всех. – Dharmendra

+0

Несомненно, но ваш комментарий в коде неправильный –

0

Ниже это удобная небольшая функция, которую вы можете использовать в таких ситуациях. Вы можете протестировать код here.

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