Obtenir la Dernière Partie de l'URL en PHP
Je me demande comment je peux extraire la dernière partie de l'URL à l'aide de PHP.
L'URL exemple:
http://domain.com/artist/song/music-videos/song-title/9393903
Maintenant, comment puis-je extraire la partie finale en utilisant PHP?
9393903
Il y a toujours le même nombre de variables dans l'URL, et l'id est toujours à la fin.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
preg_match
pour correspondre à la partie de l'URL que vous souhaitez.Dans ce cas, puisque le motif est facile, nous sommes à la recherche pour une barre oblique (
\/
et nous devons échapper, puisque c'est la barre oblique indique le début et la fin du modèle d'expression régulière), avec un ou plusieurs chiffres (\d+
) à la fin de la chaîne ($
). Les parenthèses autour de la\d+
sont utilisés pour la capture de la pièce que nous voulons: à savoir la fin. Nous avons ensuite attribuer la fin que nous voulons ($end
) à$matches[1]
(pas$matches[0]
, puisque c'est le même que$url
(c'est à dire l'ensemble de la chaîne)).Remarque: Vous pouvez ou ne voulez pas d'ajouter un peu plus de sophistication à cette expression régulière. Par exemple, si vous savez que votre URL chaînes toujours commencer avec
http://
puis les regex peuvent devenir/^http:\/\/.*\/(\d+)$/
(où.*
signifie zéro ou plusieurs caractères (qui ne sont pas le caractère de saut de ligne)).Absolue de la façon la plus simple pour ce faire, est avec
basename()
Qui permet d'imprimer
Bien sûr, si il y a une chaîne de requête, à la fin, il sera inclus dans la valeur retournée, auquel cas l'on a accepté la réponse est une meilleure solution.
Séparer et récupérer le dernier élément:
Edit: À l'appui de apache-style-les URLs canoniques,
rtrim
est à portée de main:Un autre exemple qui pourrait me considère plus lisible est (Démo):
Cet exemple prend également en compte seulement le travail sur le chemin de l'URL.
Encore un autre modifier (des années après), canonique et facile UTF-8 utilisation alternative inclus (via une expression régulière PCRE en PHP):
Qui est assez rude, mais montre comment envelopper ce, dans un
preg_match
appel pour un contrôle plus précis via PCRE modèle d'expression régulière. Pour ajouter un peu de sens à ce nu-métal exemple, il doit être enveloppé à l'intérieur d'une fonction de sa propre (ce qui pourrait aussi faire l'aliasing superflu). Présenté de cette façon, pour des raisons de concision.$url
. Mieux utiliser les array_filter pour supprimer des éléments vides première$pathFragments = array_filter(explode('/', $path));
rtrim
-boogie, j'ai édité la réponse, voir maintenant la troisième code-exemple.basename
/str*
solutions et lespreg
solutions si j'avais à deviner. Alors que c'est un intuitivement simple d'approche, il est livré avec une gestion d'exécution.Si vous êtes à la recherche pour une version robuste qui peut faire face à toute forme de Url, cela doit faire bien:
Ici est la description de la
strrchr
fonction: http://www.php.net/manual/en/function.strrchr.phpEspère que c'est utile!
basename()
solution le cas échéant.Une autre option:
L'un des plus élégants de solutions a été ici Obtenir les caractères après le dernier /url
par DisgruntledGoat
Un liner:
$page_path = end(explode('/', trim($_SERVER['REQUEST_URI'], '/')));
Obtenir URI, couper des barres obliques, de les convertir en tableau, prenez dernière partie
ce sera de faire le travail facilement pour obtenir la dernière partie de l'URL
ainsi, vous obtenez la chaîne après le premier "/" à partir de la droite.
1-liner
Ce simplement supprime tout ce qui est avant le dernier slash, y compris elle.
Une ligne de travail réponse:
De sortie: boire