获取当前的脚本文件名称

如果我有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