ale*_*lex 391
只需使用PHP魔术常量 __FILE__来获取当前文件名.
但似乎你想要没有这个部分.php.所以...
basename(__FILE__, '.php');
Run Code Online (Sandbox Code Playgroud)
更通用的文件扩展名移除器看起来像这样......
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"
Run Code Online (Sandbox Code Playgroud)
正如您所料,使用标准字符串库函数要快得多.
function chopExtension($filename) {
return substr($filename, 0, strrpos($filename, '.'));
}
Run Code Online (Sandbox Code Playgroud)
Spa*_*arK 115
如果希望include知道它所在的文件(即实际请求的脚本名称),请使用:
basename($_SERVER["SCRIPT_FILENAME"], '.php')
Run Code Online (Sandbox Code Playgroud)
因为当你写一个文件时,你通常知道它的名字.
编辑:如Alec Teal所述,如果您使用符号链接,它将显示符号链接名称.
max*_*ver 68
请参见http://php.net/manual/en/function.pathinfo.php
pathinfo(__FILE__, PATHINFO_FILENAME);
Run Code Online (Sandbox Code Playgroud)
Kha*_*azi 56
这里的区别basename(__FILE__, ".php")和basename($_SERVER['REQUEST_URI'], ".php").
basename(__FILE__, ".php")显示包含此代码的文件的名称 - 这意味着如果您在header.php中包含此代码并且当前页面是index.php,则它将返回标头而不是索引.
basename($_SERVER["REQUEST_URI"], ".php")- 如果你在header.php中使用include这段代码 ,当前页面是index.php,它将返回索引而不是header.
小智 26
这可能有所帮助:
basename($_SERVER['PHP_SELF'])
Run Code Online (Sandbox Code Playgroud)
即使您使用包含它也会有效.
use*_*ser 19
亚历克斯的答案是正确的,但你也可以这样做,没有像这样的正则表达式:
str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"]));
Run Code Online (Sandbox Code Playgroud)
beg*_*yan 14
这是我最近在寻找答案时发现的列表:
//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']);
Run Code Online (Sandbox Code Playgroud)
别忘了删除:)
<br>
你也可以用这个:
echo $pageName = basename($_SERVER['SCRIPT_NAME']);
Run Code Online (Sandbox Code Playgroud)
更通用的方法是使用pathinfo()。从 5.2 版开始,它支持PATHINFO_FILENAME.
所以
pathinfo(__FILE__,PATHINFO_FILENAME)
Run Code Online (Sandbox Code Playgroud)
也会做你需要的。
$argv[0]
我发现它使用起来更简单$argv[0]。执行脚本的名称始终是$argv数组中的第一个元素。与其他答案中建议的所有其他方法不同,此方法不需要使用basename()来删除目录树。例如:
echo __FILE__;返回类似的东西/my/directory/path/my_script.php
echo $argv[0];返回my_script.php\
更新:
@Martin 指出$argv[0]运行 CLI 时行为会发生变化。php.net$argv上的信息页面指出,
第一个参数 $argv[0] 始终是用于运行脚本的名称。
然而,六年前(在编辑本文时)的一条评论指出,
有时 $argv 可以为 null,例如当“register-argc-argv”设置为 false 时。在某些情况下,我发现当从命令行(或 cron)运行“php-cli”而不是仅“php”时,变量被正确填充。
请注意,根据文本的语法,我希望评论作者的意思是在运行“php-cli”时变量填充不正确。我可以把话放在评论者的嘴里,但说在某些情况下该函数偶尔会正确运行似乎很有趣。
| 归档时间: |
|
| 查看次数: |
364802 次 |
| 最近记录: |