如果我有PHP脚本,我怎么能得到当前执行的文件没有其扩展名的文件名?

给定一个“jquery.js.php”形式的脚本的名称,我如何提取只是“jquery.js”部分?


当前回答

__FILE__使用基于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

其他回答

当你想让你的包含知道它在什么文件(即。实际请求的脚本名称),使用:

basename($_SERVER["SCRIPT_FILENAME"], '.php')

因为当你写入一个文件时,你通常知道它的名字。

编辑:正如Alec Teal所指出的,如果你使用符号链接,它将显示符号链接的名称。

Alex的答案是正确的,但你也可以不使用正则表达式这样做:

str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"]));

正如一些人所说,basename($_SERVER["SCRIPT_FILENAME"], '.php')和basename(__FILE__, '.php')是很好的测试方法。

对我来说,使用第二种方法是我所做的一些验证说明的解决方案

这可能会有帮助:

basename($_SERVER['PHP_SELF'])

即使使用include,它也能工作。

__FILE__使用基于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