Wenn ich ein PHP Skript habe, wie bekomme ich den Dateinamen aus diesem Skript heraus?
Wenn ich den Namen eines Skripts der Form jquery.js.php
nehme, wie kann ich nur den Teil "jquery.js" extrahieren?
Verwenden Sie einfach die magische Konstante PHP__FILE__
, um den aktuellen Dateinamen zu erhalten.
Aber es scheint, Sie wollen das Teil ohne .php
. So...
basename(__FILE__, '.php');
Ein generischer Dateierweiterung-Entferner würde so aussehen ...
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"
Die Verwendung von Standard-String-Bibliotheksfunktionen ist viel schneller wie Sie es erwarten würden.
function chopExtension($filename) {
return substr($filename, 0, strrpos($filename, '.'));
}
Wenn Ihr Include wissen soll, in welcher Datei es sich befindet (dh, welcher Skriptname wurde tatsächlich angefordert), verwenden Sie:
basename($_SERVER["SCRIPT_FILENAME"], '.php')
Denn wenn Sie in eine Datei schreiben, kennen Sie normalerweise den Namen.
Bearbeiten: Wie von Alec Teal angegeben, wird bei Verwendung von Symlinks stattdessen der Name des Symlinks angezeigt.
Siehe http://php.net/manual/de/function.pathinfo.php
pathinfo(__FILE__, PATHINFO_FILENAME);
Hier ist der Unterschied zwischen basename(__FILE__, ".php")
und basename($_SERVER['REQUEST_URI'], ".php")
.
basename(__FILE__, ".php")
zeigt den Namen der Datei, in der dieser Code enthalten ist. Wenn Sie diesen Code in header.php angeben und die aktuelle Seite index.php ist, wird header nicht zurückgegeben Index.
basename($_SERVER["REQUEST_URI"], ".php")
- Wenn Sie diesen Code in header.php einfügen verwenden und die aktuelle Seite index.php ist, wird index nicht header zurückgegeben.
Das könnte helfen:
basename($_SERVER['PHP_SELF'])
es funktioniert auch, wenn Sie include verwenden.
die Antwort von alex ist richtig, aber Sie könnten dies auch ohne reguläre Ausdrücke tun:
str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"]));
Hier ist eine Liste der Antworten, die ich kürzlich gefunden habe:
//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']);
Vergessen Sie nicht zu entfernen :)
<br>
sie können dies auch verwenden:
echo $pageName = basename($_SERVER['SCRIPT_NAME']);
Ein allgemeinerer Weg wäre die Verwendung von pathinfo () . Seit Version 5.2 wird PATHINFO_FILENAME
unterstützt.
So
pathinfo(__FILE__,PATHINFO_FILENAME)
wird auch tun, was Sie brauchen.
$ argv [0]
Ich habe es viel einfacher gefunden, $argv[0]
zu verwenden. Der Name des ausführenden Skripts ist immer das erste Element im $argv
-Array. Im Gegensatz zu allen anderen in anderen Antworten vorgeschlagenen Methoden erfordert diese Methode nicht die Verwendung von basename()
zum Entfernen der Verzeichnisstruktur. Zum Beispiel:
echo __FILE__;
gibt so etwas wie /my/directory/path/my_script.php
zurück
echo $argv[0];
gibt my_script.php
zurück
Versuche dies
$current_file_name = $_SERVER['PHP_SELF'];
echo $current_file_name;
__FILE__
verwende Beispiele basierend auf den Ergebnissen des localhost-Servers
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
$filename = "jquery.js.php";
$ext = pathinfo($filename, PATHINFO_EXTENSION);//will output: php
$file_basename = pathinfo($filename, PATHINFO_FILENAME);//will output: jquery.js
Dies funktioniert für mich, auch wenn sie in einer enthaltenen PHP -Datei ausgeführt wird und der Dateiname der aktuellen PHP-Datei ausgeführt werden soll:
$currentPage= $_SERVER["SCRIPT_NAME"];
$currentPage = substr($currentPage, 1);
echo $currentPage;
Ergebnis:
index.php
Wie bereits erwähnt, sind basename($_SERVER["SCRIPT_FILENAME"], '.php')
und basename( __FILE__, '.php')
gute Möglichkeiten, dies zu testen.
Für mich war der zweite die Lösung für einige Validierungsanweisungen, die ich machte