2011-06-25 14 views
35

Bu genel bir soru gibi görünüyor ama bunların hiçbiri aradığım şey değil. Bir web sitesi varsa:PHP - Başlangıç ​​URL'si Alınıyor

www.example.com/test.php

ben "test.php" çıkarmak istiyorum ve bunun gibi bir şey olmadığını:

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

Sadece "test.php" yi çekmeyi istiyorum ancak her şey sadece sayfa yerine tam yolu çekiyor gibi görünüyor. Baska öneri?

+4

neden bu soru konuda "geçerli url" bir url istemiyoruz zaman? Ayrıca, test.php'ye yeniden yazılan url www.exemple.com/test adresli mod_rewrite zorlama varsa, test.php mi yoksa istediğiniz testi mi? – eis

cevap

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

Voila.

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

için: - Bu, istenen dosyanın adını alacak

+0

Çok çok güzel teşekkür ederim! –

+0

Sorun değil, cevap olarak ayarlamayı da unutmayın! :) –

+47

daha kısa versiyon: '$ what_you_want = basename ($ _ SERVER ['PHP_SELF']);' – Cyclone

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

Bu, "/folder1/folder2/test.php" –

+0

@ Howdy_McGee olarak geri geliyor. Emin misiniz? '$ pfile' sadece' test.php' tutmalıdır. –

+0

@Howdy_McGee test edildi ve benim için çalışıyor: http: //localhost/test1/test2/file.php print "file.php" –

40

(sadece mod_rewrite'ın kullandığınız durumda dosyanın gerçek değil konum çağrılan URL'ye göre) hem http://www.example.com/testing01.php ve http://www.example.com/x/y/z/testing01.php verecek:

testing01.php 
+4

Bu, kabul edilen yanıtın +1'den iki kat daha iyidir. –

+1

en iyi cevapla aynı şey hakkında ama en iyi cevap daha fazla bilgi amaçlı IMO –

+3

@Howdy_McGee: Ben katılmıyorum. Temel fark, gerçekten gösterdiğimiz şey. "Geçerli URL’yi Sıfırlama" hakkında soru sordunuz. [Dokümantasyon] 'a göre (http://php.net/manual/en/reserved.variables.server.php): '$ _SERVER [' REQUEST_URI ']'' bu sayfaya erişmek için verilen URI’yı alır. Örneğin, '/index.html'._ ", $ _SERVER [' PHP_SELF ']' eşittir "_Dosya dosyasının köküne göre şu anda çalışan komut dosyasının dosya adı. (...) _", Yukarıdakilere eşit veya olmayabilir. Cevabımdaki farkı açıkladım ('mod_rewrite' ile ilgili kısım). – Tadeck