Получить текущее имя файла сценария

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

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

Просто используйте магическую константу 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, '.')); } 

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

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

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

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

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

 pathinfo(__FILE__, PATHINFO_FILENAME); 

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

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

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

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

 basename($_SERVER['PHP_SELF']) 

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

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

 str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"])); 

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

 echo $pageName = basename($_SERVER['SCRIPT_NAME']); 

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

 //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>

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

Так

 pathinfo(__FILE__,PATHINFO_FILENAME) 

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

 $filename = "jquery.js.php"; $ext = pathinfo($filename, PATHINFO_EXTENSION);//will output: php $file_basename = pathinfo($filename, PATHINFO_FILENAME);//will output: jquery.js 

__FILE__ использовать примеры на основе результатов локального сервера:

 echo __FILE__; // C:\LocalServer\www\templates\page.php echo strrchr( __FILE__ , '\\' ); // \page.php echo substr( strrchr( __FILE__ , '\\' ), 1); // page.php echo basename(__FILE__, '.php'); // page 

Поскольку некоторые упомянутые basename ($ _ SERVER ["SCRIPT_FILENAME"], '.php') и basename ( __FILE__ , '.php') – хорошие способы проверить это.

Для меня использование второго было решением некоторых инструкций по валидации, которые я делал