У меня есть этот URLПолучить URL информации без GET или POST
http://www.mywebsite.com/person?id=10
, но я не хочу, $_GET
переменной. Я хочу, чтобы это так:
http://www.mywebsite.com/person/10
У меня есть этот URLПолучить URL информации без GET или POST
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
_will return 10_ ... Нет, он возвращает **/10 ** –
Да, именно это вернет, но @Allamanda хочет вычитать значение из URL без использования функции GET после значения захвата, может фильтровать это из косой черты и всех. – Dharmendra
Несомненно, но ваш комментарий в коде неправильный –
Ниже это удобная небольшая функция, которую вы можете использовать в таких ситуациях. Вы можете протестировать код 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;
}
Вы должны искать учебник по URL переписывания – AntoineB
перезаписи URL правильный ответ, однако, обратите внимание, что он работает только в одном направлении: пользователь вводит «example.com/person/10» и рерайт изменит его на "example.com/person?id=10" –
Возможный дубликат [переписывание URL с PHP] (http://stackoverflow.com/questions/16388959/url-rewriting-with-php) – Draken