2011-05-31 5 views
1

Disons que nous avons lien comme suivantRécupérer ID lien

pour le lien comme ****.com/index.php?id=4

le <?=$id?> est 4

pour le lien comme ****.com/4

le <?=$id?> est 4

pour lien comme ****.com/4-keyowrd-keyword

$realid = array_shift(explode("-", $id)); 

si <?=$realid?> est 4

Maintenant, ma question est pour lien sous ****.com/4/keyword-keyword

Comment puis obtenir l'ID comme 4 est-il possible de le faire?

Merci

Répondre

2

Si vous avez réellement une URL complète avec le système inclus (ex: http://something.com et pas seulement something.com), vous peut faire:

// Search in the query string 
$url = 'http://something.php/index.php?id=4'; 
$query = parse_url($url, PHP_URL_QUERY); 
parse_str($query, $queryArr); 
$id = $queryArr['id']; 
echo $id; // 4 

// Search in the path 
$url = 'http://something.com/4/keyword-keyword'; 
$path = parse_url($url, PHP_URL_PATH); 
$id = basename(dirname($path)); 
echo $id; // 4 

// Search in the path (undefined length) 
$url = 'http://something.com/4/keyword-keyword/foo/bar'; 
$path = parse_url($url, PHP_URL_PATH); 
list(,$id) = explode('/', $path); 
echo $id; // 4 

Si vous n'êtes pas le système là-bas, vous pouvez simplement ajouter @, comme:

$url = 'http://'.$url; 
+0

fonctionne parfaitement c'est exactement ce que je demandais.thanks –

0

Utilisez $_SERVER['PHP_SELF'] et exploser la \ pour obtenir votre variable

0
$realid = array_shift(explode("/", $_SERVER['REQUEST_URI'])); 
+0

-1 Ne fonctionne pas. array_shift accepte une référence, donc vous obtenez une erreur E_STRICT juste là. En outre, il retournera toujours une chaîne vide, puisque REQUEST_URI commence par une barre oblique. – netcoder