Pobierz bieżącą nazwę pliku skryptu
Jeśli mam skrypt PHP, Jak mogę pobrać nazwę pliku z wewnątrz tego skryptu?
Również, biorąc pod uwagę nazwę skryptu formularza jquery.js.php
, Jak mogę wyodrębnić tylko " jquery.część js?
15 answers
Wystarczy użyć magicznej stałej PHP __FILE__
aby uzyskać bieżącą nazwę pliku.
Ale wygląda na to, że chcesz rolę bez .php
. Więc...
basename(__FILE__, '.php');
Bardziej ogólny program do usuwania rozszerzeń plików wyglądałby tak...
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"
Używanie standardowych funkcji string library jest znacznie szybsze , Jak można się spodziewać.
function chopExtension($filename) {
return substr($filename, 0, strrpos($filename, '.'));
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-18 13:10:05
Gdy chcesz, aby twój include wiedział, w jakim pliku jest (np. jaka nazwa skryptu została faktycznie zażądana), użyj:
basename($_SERVER["SCRIPT_FILENAME"], '.php')
Ponieważ kiedy piszesz do pliku, Zwykle znasz jego nazwę.
Edit: jak zauważył Alec Teal, jeśli używasz dowiązań symbolicznych, wyświetli nazwę dowiązania symbolicznego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-30 13:05:50
Zobacz http://php.net/manual/en/function.pathinfo.php
pathinfo(__FILE__, PATHINFO_FILENAME);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-19 11:04:44
Oto różnica między basename(__FILE__, ".php")
i basename($_SERVER['REQUEST_URI'], ".php")
.
basename(__FILE__, ".php")
pokazuje nazwę pliku, w którym znajduje się ten kod - oznacza to, że jeśli umieścisz ten kod w nagłówku .php a bieżąca strona to indeks.php , zwróci nagłówek nie indeks.
basename($_SERVER["REQUEST_URI"], ".php")
- jeśli użyjesz tego kodu w nagłówku .php a bieżąca strona to indeks.php , zwróci index nie header .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-28 21:33:09
To może pomóc:
basename($_SERVER['PHP_SELF'])
Będzie działać nawet jeśli używasz include.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-10 16:13:19
ODPOWIEDŹ Alexa jest poprawna, ale można to zrobić również bez wyrażeń regularnych:
str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"]));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-19 01:54:05
Oto lista tego, co znalazłem ostatnio szukając odpowiedzi:
//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']);
Nie zapomnij usunąć :)
<br>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-25 09:07:48
Możesz również użyć tego:
echo $pageName = basename($_SERVER['SCRIPT_NAME']);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-31 09:04:07
Bardziej ogólnym sposobem byłoby użycie pathinfo () . Od wersji 5.2 obsługuje PATHINFO_FILENAME
.
Więc
pathinfo(__FILE__,PATHINFO_FILENAME)
Zrobi to, czego potrzebujesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-30 22:19:39
$argv[0]
Znalazłem go znacznie prostsze w użyciu $argv[0]
. Nazwa wykonującego skryptu jest zawsze pierwszym elementem tablicy $argv
. W przeciwieństwie do innych metod sugerowanych w innych odpowiedziach, metoda ta nie wymaga użycia basename()
do usunięcia drzewa katalogów. Na przykład:
echo __FILE__;
zwraca coś w rodzaju/my/directory/path/my_script.php
echo $argv[0];
zwrotymy_script.php
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-19 03:19:47
Spróbuj Tego
$current_file_name = $_SERVER['PHP_SELF'];
echo $current_file_name;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-08 05:35:09
$filename = "jquery.js.php";
$ext = pathinfo($filename, PATHINFO_EXTENSION);//will output: php
$file_basename = pathinfo($filename, PATHINFO_FILENAME);//will output: jquery.js
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-21 08:21:34
__FILE__
użyj przykładów opartych na wynikach serwera 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-21 11:25:22
Jak niektórzy mówili basename($_SERVER["SCRIPT_FILENAME"], '.php')
i basename( __FILE__, '.php')
są dobrymi sposobami, aby to przetestować.
Dla mnie za pomocą drugiego było rozwiązanie dla niektórych instrukcji walidacji, które robiłem
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-09 15:03:44
Działa to dla mnie, nawet gdy jest uruchamiany wewnątrz dołączonego pliku PHP i chcesz, aby nazwa pliku bieżącego pliku php była uruchomiona:
$currentPage= $_SERVER["SCRIPT_NAME"];
$currentPage = substr($currentPage, 1);
echo $currentPage;
Wynik:
Indeks.php
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-25 10:50:21