Получить имя текущего файла сценария
Если у меня есть php-скрипт, как я могу получить имя файла из скрипта?
также дано название скрипта формы jquery.js.php
, Как я могу извлечь только " jquery.АО" часть?
15 ответов
просто использовать PHP magic constant __FILE__
получить текущее имя.
но, кажется, вы хотите часть без .php
. Так...
basename(__FILE__, '.php');
более общее расширение файла remover будет выглядеть так...
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, '.'));
}
когда вы хотите, чтобы ваш include знал, в каком файле он находится (т. е. какое имя скрипта было фактически запрошено), используйте:
basename($_SERVER["SCRIPT_FILENAME"], '.php')
потому что при записи в файл вы обычно знаете его имя.
Edit: как отметил Алек Тил, если вы используете символические ссылки, вместо этого будет отображаться имя символической ссылки.
см.http://php.net/manual/en/function.pathinfo.php
pathinfo(__FILE__, PATHINFO_FILENAME);
вот разница между basename(__FILE__, ".php")
и basename($_SERVER['REQUEST_URI'], ".php")
.
basename(__FILE__, ".php")
показывает имя файла, где этот код включен - это означает, что если вы включаете этот код в .в PHP и текущая страница .в PHP, он вернется заголовок не индекс.
basename($_SERVER["REQUEST_URI"], ".php")
- Если вы используете включить этот код в .в PHP и текущая страница .в PHP, он вернется индекс не заголовок.
Это может помочь:
basename($_SERVER['PHP_SELF'])
он будет работать, даже если вы используете включать.
ответ Алекса правильный, но вы также можете сделать это без регулярных выражений, таких как:
str_replace(".php", "", 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)
также будет делать то, что вам нужно.
$argv[0]
Я нашел его гораздо проще использовать $argv[0]
. Имя исполняемого скрипта всегда является первым элементом в $argv
массив. В отличие от всех других методов, предложенных в других ответах, этот метод не требует использования basename()
удалить дерево каталогов. Например:
echo __FILE__;
возвращает что-то вроде/my/directory/path/my_script.php
echo $argv[0];
возвращаетmy_script.php
$filename = "jquery.js.php";
$ext = pathinfo($filename, PATHINFO_EXTENSION);//will output: php
$file_basename = pathinfo($filename, PATHINFO_FILENAME);//will output: jquery.js
__FILE__
используйте примеры, основанные на результатах сервера localhost:
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')
хорошие способы проверить это.
для меня использование второго было решением для некоторых инструкций проверки, которые я делал
это работает для меня, даже при запуске внутри включенного файла PHP, и вы хотите, чтобы имя файла текущего файла php работало:
$currentPage= $_SERVER["SCRIPT_NAME"];
$currentPage = substr($currentPage, 1);
echo $currentPage;
результат:
.в PHP