Получить текущее имя файла скрипта - PullRequest
237 голосов
/ 19 ноября 2010

Если у меня есть скрипт PHP, как я могу получить имя файла внутри этого скрипта?

Кроме того, учитывая имя скрипта в форме jquery.js.php, как я могу извлечь только "jquery.JS "часть?

Ответы [ 15 ]

374 голосов
/ 19 ноября 2010

Просто используйте магическую константу PHP __FILE__, чтобы получить текущее имя файла.

Но, похоже, вы хотите получить деталь без .php. Итак ...

basename(__FILE__, '.php'); 

Более универсальное средство для удаления расширений файлов будет выглядеть следующим образом ...

function chopExtension($filename) {
    return pathinfo($filename, PATHINFO_FILENAME);
}

var_dump(chopExtension('bob.php')); // string(3) "bob"
var_dump(chopExtension('bob.i.have.dots.zip')); // string(15) "bob.i.have.dots"

Использование стандартных функций библиотеки строк намного быстрее , как и следовало ожидать.

function chopExtension($filename) {
    return substr($filename, 0, strrpos($filename, '.'));
}
109 голосов
/ 31 октября 2012

Если вы хотите, чтобы ваше включение знало, в каком файле оно находится (т.е. какое имя скрипта было запрошено), используйте:

basename($_SERVER["SCRIPT_FILENAME"], '.php')

Потому что, когда вы пишете в файл, вы обычно знаете его имя.

Редактировать: Как отметил Алек Тил, если вы используете символические ссылки, вместо этого будет отображаться имя символической ссылки.

62 голосов
/ 28 марта 2012

См. http://php.net/manual/en/function.pathinfo.php

pathinfo(__FILE__, PATHINFO_FILENAME);
52 голосов
/ 21 ноября 2012

Вот разница между basename(__FILE__, ".php") и basename($_SERVER['REQUEST_URI'], ".php").

basename(__FILE__, ".php") показывает имя файла, в который включен этот код. Это означает, что если вы включите этот код в header.php , а текущая страница будет index.php , он вернет заголовок не индекс .

basename($_SERVER["REQUEST_URI"], ".php") - Если вы включите этот код в header.php , а текущая страница будет index.php , она вернет index не заголовок .

25 голосов
/ 10 февраля 2013

Это может помочь:

basename($_SERVER['PHP_SELF'])

это будет работать, даже если вы используете include.

19 голосов
/ 19 ноября 2010

alex ответ правильный, но вы также можете сделать это без регулярных выражений, таких как:

str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"]));
13 голосов
/ 25 февраля 2016

Вот список, который я недавно нашел в поиске ответа:

//self name with file extension
echo basename(__FILE__) . '<br>';
//self name without file extension
echo basename(__FILE__, '.php') . '<br>';
//self full url with file extension
echo __FILE__ . '<br>';

//parent file parent folder name
echo basename($_SERVER["REQUEST_URI"]) . '<br>';
//parent file parent folder name with //s
echo $_SERVER["REQUEST_URI"] . '<br>';

// parent file name without file extension
echo basename($_SERVER['PHP_SELF'], ".php") . '<br>';
// parent file name with file extension
echo basename($_SERVER['PHP_SELF']) . '<br>';
// parent file relative url with file etension
echo $_SERVER['PHP_SELF'] . '<br>';

// parent file name without file extension
echo basename($_SERVER["SCRIPT_FILENAME"], '.php') . '<br>';
// parent file name with file extension
echo basename($_SERVER["SCRIPT_FILENAME"]) . '<br>';
// parent file full url with file extension
echo $_SERVER["SCRIPT_FILENAME"] . '<br>';

//self name without file extension
echo pathinfo(__FILE__, PATHINFO_FILENAME) . '<br>';
//self file extension
echo pathinfo(__FILE__, PATHINFO_EXTENSION) . '<br>';

// parent file name with file extension
echo basename($_SERVER['SCRIPT_NAME']);

Не забудьте удалить:)

<br>

6 голосов
/ 31 августа 2013

Вы также можете использовать это:

echo $pageName = basename($_SERVER['SCRIPT_NAME']);
4 голосов
/ 31 марта 2014

Более общим способом было бы использование pathinfo () .Начиная с версии 5.2 он поддерживает PATHINFO_FILENAME.

Так что

pathinfo(__FILE__,PATHINFO_FILENAME)

также будет делать то, что вам нужно.

2 голосов
/ 25 июля 2018

Это работает для меня, даже когда запускается внутри включенного PHP-файла, и вы хотите, чтобы имя текущего файла php работало:

$currentPage= $_SERVER["SCRIPT_NAME"];
$currentPage = substr($currentPage, 1);
echo $currentPage;

Результат:

index.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...