在 PHP 中獲取當前指令碼檔名
你的指令碼可能需要當前檔名及其當前正在執行的目錄名。在本教程文章中,我們將討論如何獲取專案中當前指令碼的檔名。
PHP 提供了多種方式來查詢當前檔名。首先,我們將簡要了解所有引數和方法,然後將它們組合起來得到結果。
-
__FILE__
:PHP 提供了 9 個神奇的常量,根據它們的用途來使用。這些常量是由各種擴充套件建立的。所有這些常量都在編譯時解析。
__FILE__
是這樣一個神奇的常量之一,它為你提供當前 .php 檔案的檔案系統路徑。 -
$_SERVER
:$_SERVER
是一個包含有關標題、路徑和指令碼位置資訊的陣列。網路伺服器建立所有這些資訊。 -
PHP_SELF
:PHP_SELF
是一個變數,用於獲取當前正在執行的指令碼的檔名。它是相對於文件根的。當使用者在命令列中執行此命令時,它會列印有關指令碼名稱的資訊。 -
SCRIPT_FILENAME
:這是一個變數,用於獲取當前正在執行的指令碼的檔名,唯一的區別是它的路徑是絕對的。
-
SCRIPT_NAME
:它包含當前指令碼的路徑。這對於需要指向自身的頁面很有用。
-
REQUEST_URI
:URI 用於訪問頁面的位置,例如,
/index.html
。
現在讓我們一起使用上述所有命令來獲取檔名。
-
$_SERVER['SCRIPT_NAME']
:帶有副檔名的父檔名
-
$_SERVER['PHP_SELF']
:帶有副檔名的父檔案相對 URL。例如,
http://example.com/parentFolder/child.php
將是/parentFolder/child.php
。 -
$_SERVER['SCRIPT_FILENAME']
:帶有副檔名的父檔案完整 URL
-
$_SERVER['REQUEST_URI']
:父檔案父資料夾名稱與
如果檔案的路徑作為引數提供給 basename()
函式,則內建的 PHP 函式 basename()
將返回檔案的基本名稱。
-
basename(__FILE__)
:帶有 PHP 副檔名的當前檔名。
-
basename(__FILE__, '.php')
:沒有 PHP 副檔名的當前檔名。
-
basename($_SERVER['PHP_SELF'], ".php")
:沒有 PHP 副檔名的當前檔名。
-
basename($_SERVER['PHP_SELF'])
:帶有 PHP 副檔名的當前檔名。
-
pathinfo(__FILE__, PATHINFO_FILENAME)
:沒有 PHP 副檔名的當前檔名。
PHP 中獲取當前指令碼檔名的示例程式碼
<?php
echo "\$_SERVER['SCRIPT_NAME']: ";
echo $_SERVER['SCRIPT_NAME'];
echo "\n";
echo "\$_SERVER['PHP_SELF']: ";
echo $_SERVER['PHP_SELF'];
echo "\n";
echo "\$_SERVER['SCRIPT_FILENAME']: ";
echo $_SERVER['SCRIPT_FILENAME'];
echo "\n";
echo "basename(__FILE__): ";
echo basename(__FILE__);
echo "\n";
echo "basename(__FILE__, '.php'): ";
echo basename(__FILE__, '.php');
echo "\n";
echo "basename(\$_SERVER['PHP_SELF'], '.php'): ";
echo basename($_SERVER['PHP_SELF'], '.php');
echo "\n";
echo "basename(\$_SERVER['PHP_SELF']): ";
echo basename($_SERVER['PHP_SELF']);
echo "\n";
echo "pathinfo(__FILE__, PATHINFO_FILENAME): ";
echo pathinfo(__FILE__, PATHINFO_FILENAME);
echo "\n";
?>
輸出:
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn