2011-06-25 5 views
35

Cela semble être une question commune, mais aucun d'entre eux ne semble être ce que je cherche. S'il y a un site:PHP - Obtenir l'URL actuelle

www.example.com/test.php

Je veux tirer le "test.php" et si elle est quelque chose comme:

www.example.com/folder /folder1/test.php

Je veux à nouveau tirer "test.php" mais tout semble tirer le chemin exact au lieu de simplement la page. Aucune suggestion?

+4

Pourquoi cette question « url actuelle » dans le sujet lorsque vous ne demandez pas une url? aussi, s'il y a mod_rewrite forçant l'url www.exemple.com/test, qui est réécrit à test.php, est-ce test.php ou test que vous voulez? – eis

Répondre

43
$query = $_SERVER['PHP_SELF']; 
$path = pathinfo($query); 
$what_you_want = $path['basename']; 

Voila.

+0

Très très cool merci! –

+0

Pas de problème, n'oubliez pas de définir comme réponse! :) –

+47

version plus courte: '$ what_you_want = basename ($ _ SERVER ['PHP_SELF']);' – Cyclone

2
$file = $_SERVER["SCRIPT_NAME"]; 
$break = explode('/', $file); 
$pfile = $break[count($break) - 1]; 
+0

Cela revient à "/folder1/folder2/test.php" –

+0

@Howdy_McGee: Êtes-vous sûr? '$ pfile' devrait juste contenir' test.php'. –

+0

@Howdy_McGee testé et cela fonctionne pour moi: http: //localhost/test1/test2/file.php affiche "fichier.php" –

40

Cela vous obtenir le nom du fichier qui a été demandé (basé sur l'URL invoquée, pas réel emplacement du fichier - juste au cas où vous utilisez mod_rewrite):

$filename = basename($_SERVER['REQUEST_URI']); 

Pour à la fois http://www.example.com/testing01.php et http://www.example.com/x/y/z/testing01.php vous donnera:

testing01.php 
+4

C'est deux fois mieux que la réponse acceptée, +1. –

+1

c'est à peu près la même chose que la première réponse, mais la meilleure réponse est plus détaillée à des fins d'information IMO –

+3

@Howdy_McGee: Je ne suis pas d'accord. La différence fondamentale est ce que nous montrons vraiment. Vous avez demandé "_Getting Current URL_". Selon [la documentation] (http://php.net/manual/fr/reserved.variables.server.php): '$ _SERVER ['REQUEST_URI']' obtient '_ L'URI qui a été donné pour accéder à cette page par exemple, '/index.html'._', alors que '$ _SERVER ['PHP_SELF']' est égal à "_Le nom de fichier du script en cours d'exécution, par rapport à la racine du document. (...) _", qui peut ou peut ne pas être égal à ce qui précède. J'ai expliqué la différence dans ma réponse (dans la partie sur 'mod_rewrite'). – Tadeck