Если у меня есть PHP script, как я могу получить имя файла изнутри script?
Также, учитывая имя script формы jquery.js.php
, как я могу извлечь только часть jquery.js?
Если у меня есть PHP script, как я могу получить имя файла изнутри script?
Также, учитывая имя script формы 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, '.'));
}
Если вы хотите, чтобы ваш агент знал, в каком файле он находится (т.е. какое имя script было запрошено), используйте:
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
Как говорят некоторые базовые имена ($ _ SERVER [ "SCRIPT_FILENAME" ], '.php') и basename (__FILE__
, '.php'), являются хорошим способом проверить это.
Мне, используя второе, было решение для некоторых инструкций проверки, которые я делал