2012-10-23 28 views
82

thể trùng lặp:
Get the current script file nameLàm thế nào để có được tên hiện tại trang PHP

Tôi đã một tập tin gọi demo.php nơi tôi không có bất kỳ biến GET trong URL, vì vậy nếu Tôi muốn ẩn một nút nếu ở trên trang này tôi không thể sử dụng một cái gì đó như thế này:

if($_GET['name'] == 'value') { 
    //Hide 
} else { 
    //show 
} 

Vì vậy, tôi muốn một cái gì đó như

$filename = //get file name 
if($filename == 'file_name.php') { 
    //Hide 
} else { 
    //show 
} 

Tôi không muốn khai báo các biến GET không cần thiết chỉ để làm điều này ...

Trả lời

233

Bạn có thể sử dụng basename()$_SERVER['PHP_SELF'] để có được trang hiện tên file

echo basename($_SERVER['PHP_SELF']); /* Returns The Current PHP File Name */ 
+3

nếu url là 'abc.php? Blah = demo' hoặc' abc.php \ a \ b? 'Vì tôi chỉ cần abc, php –

+7

bạn sẽ nhận được' abc.php' :) –

+17

Ngoài ra .. Bạn có thể thay thế phần mở rộng '.php' và dấu gạch ngang ' ucwords (str_ireplace (mảng ('-', '.php'), mảng ('', ''), tên cơ sở ($ _ SERVER ['PHP_SELF']))) ' và viết hoa chữ bằng' ucwords' hoặc chữ cái đầu tiên bằng 'ucfirst'. Có thể ai đó sẽ cần điều này ... –

9

Trong trường hợp của bạn bạn có thể sử dụng biến số __FILE__!
Nó sẽ giúp ích.
Đây là một trong số được xác định trước.
Đọc thêm về các hằng số được xác định trước trong PHP http://php.net/manual/en/language.constants.predefined.php

22

$_SERVER["PHP_SELF"]; sẽ cung cấp cho bạn tên tập tin hiện tại và đường đi của nó, nhưng basename(__FILE__) nên cung cấp cho bạn tên tập tin mà nó được gọi là từ.

Vì vậy

if(basename(__FILE__) == 'file_name.php') { 
    //Hide 
} else { 
    //show 
} 

nên làm điều đó.

Các vấn đề liên quan