获取当前的脚本文件名称
如果我有PHP脚本,我怎么能从该脚本中获取文件名?
另外,给定一个forms为jquery.js.php
的脚本的名称,我怎样才能提取“jquery.js”部分?
只需使用PHP魔术常量 __FILE__
来获取当前的文件名。
但似乎你想没有.php
的部分。 所以…
basename(__FILE__, '.php');
更通用的文件扩展名卸妆将看起来像这样…
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"
正如你所期望的那样,使用标准的string库函数要快得多 。
function chopExtension($filename) { return substr($filename, 0, strrpos($filename, '.')); }
当你想要你的包含知道它在什么文件(即什么脚本名称实际要求),使用:
basename($_SERVER["SCRIPT_FILENAME"], '.php')
因为当你写一个文件时,你通常知道它的名字。
编辑:正如亚历克·蒂尔指出的,如果你使用符号链接,它会显示符号链接名称。
请参阅http://php.net/manual/en/function.pathinfo.php
pathinfo(__FILE__, PATHINFO_FILENAME);
这里是basename(__FILE__, ".php")
和basename($_SERVER['REQUEST_URI'], ".php")
之间的区别。
basename(__FILE__, ".php")
显示包含此代码的文件的名称 – 这意味着如果您将此代码包含在header.php中并且当前页面是index.php ,则它将返回标头而不是索引 。
basename($_SERVER["REQUEST_URI"], ".php")
– 如果你在header.php中包含这个代码,并且当前页面是index.php ,它将返回索引而不是标题 。
这可能有助于:
basename($_SERVER['PHP_SELF'])
即使你正在使用include也能工作。
亚历克斯的答案是正确的,但你也可以做到这一点没有像这样的正则expression式:
str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"]));
你也可以使用这个:
echo $pageName = basename($_SERVER['SCRIPT_NAME']);
下面是我最近find的一个答案列表:
//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']);
不要忘记删除:)
<br>
更一般的方法是使用pathinfo() 。 从版本5.2开始,它支持PATHINFO_FILENAME
。
所以
pathinfo(__FILE__,PATHINFO_FILENAME)
也会做你所需要的。
$filename = "jquery.js.php"; $ext = pathinfo($filename, PATHINFO_EXTENSION);//will output: php $file_basename = pathinfo($filename, PATHINFO_FILENAME);//will output: jquery.js
__FILE__
使用基于本地主机服务器结果的示例:
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
正如一些所说的基本名称($ _ SERVER [“SCRIPT_FILENAME”],'.php')和基本名称( __FILE__
,'.php')是testing这个好方法。
对我来说,使用第二个是我正在做的一些validation说明的解决scheme