如果我有PHP脚本,我怎么能得到当前执行的文件没有其扩展名的文件名?
给定一个“jquery.js.php”形式的脚本的名称,我如何提取只是“jquery.js”部分?
如果我有PHP脚本,我怎么能得到当前执行的文件没有其扩展名的文件名?
给定一个“jquery.js.php”形式的脚本的名称,我如何提取只是“jquery.js”部分?
当前回答
下面是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,它将返回索引而不是头。
其他回答
当你想让你的包含知道它在什么文件(即。实际请求的脚本名称),使用:
basename($_SERVER["SCRIPT_FILENAME"], '.php')
因为当你写入一个文件时,你通常知道它的名字。
编辑:正如Alec Teal所指出的,如果你使用符号链接,它将显示符号链接的名称。
Alex的答案是正确的,但你也可以不使用正则表达式这样做:
str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"]));
例子:
包含文件:config.php
<?php
$file_name_one = basename($_SERVER['SCRIPT_FILENAME'], '.php');
$file_name_two = basename(__FILE__, '.php');
?>
执行文件:index.php
<?php
require('config.php');
print $file_name_one."<br>\n"; // Result: index
print $file_name_two."<br>\n"; // Result: config
?>
正如一些人所说,basename($_SERVER["SCRIPT_FILENAME"], '.php')和basename(__FILE__, '.php')是很好的测试方法。
对我来说,使用第二种方法是我所做的一些验证说明的解决方案
这可能会有帮助:
basename($_SERVER['PHP_SELF'])
即使使用include,它也能工作。