如果我有PHP脚本,如何从该脚本内部获取文件名?
另外,给定表单脚本的名称,jquery.js.php
我如何仅提取“ jquery.js”部分?
also
表示您正在询问其他问题。嘘。一些偷看的孩子。
如果我有PHP脚本,如何从该脚本内部获取文件名?
另外,给定表单脚本的名称,jquery.js.php
我如何仅提取“ jquery.js”部分?
also
表示您正在询问其他问题。嘘。一些偷看的孩子。
Answers:
只需使用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"
如您所料,使用标准的字符串库函数要快得多。
function chopExtension($filename) {
return substr($filename, 0, strrpos($filename, '.'));
}
substr
和strrchr
剥离最后的.
和后面的所有东西呢?
__FILE__
为您提供.php
该行所在的文件时,您实际上需要$_SERVER['SCRIPT_NAME']
当前正在运行的顶级脚本(该脚本由Web服务器调用或直接在命令行上调用)
当您希望包含文件知道文件所在的文件(即实际请求的脚本名称)时,请使用:
basename($_SERVER["SCRIPT_FILENAME"], '.php')
因为当您写入文件时,您通常会知道其名称。
编辑:如Alec Teal所述,如果您使用符号链接,它将显示符号链接名称。
pathinfo($_SERVER["SCRIPT_FILENAME"], PATHINFO_BASENAME);
参见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,它将返回标头而不是index。
basename($_SERVER["REQUEST_URI"], ".php")
-如果您在header.php中使用此代码, 并且当前页面为index.php,它将返回index而不是header。
SCRIPT_FILENAME
还是REQUEST_URI
?我知道它们都是服务器变量,但不是REQUEST_URI
用户篡改的值吗?它造成“ URI注入”威胁
basename($_SERVER["REQUEST_URI"], ".php");
如果链接的格式为@KhandadNiazi,则将返回文件夹的名称http://example.com/somefolder
。basename($_SERVER['PHP_SELF'], ".php");
在这种情况下,虽然将始终返回脚本的名称index
。
这可能会有所帮助:
basename($_SERVER['PHP_SELF'])
即使您使用include,它也将起作用。
.php
OP试图摆脱的结局
basename($_SERVER['PHP_SELF'], ".php");
alex的答案是正确的,但您也可以在没有正则表达式的情况下执行以下操作:
str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"]));
hey.php-i-am-a-weird-filename.php
。
这是我最近搜索答案时发现的列表:
//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>
index.php
包括header.php
,其中又包括functions.php
,log_location()
驻留位置。我打电话log_location()
的header.php
,然后我跑index.php
。以上所有功能均会打印出功能,索引或域或其中的一些变化。我不知道哪个PHP脚本调用了该函数。甚至有可能(单线)?@begoyan
试试这个
$current_file_name = $_SERVER['PHP_SELF'];
echo $current_file_name;
$filename = "jquery.js.php";
$ext = pathinfo($filename, PATHINFO_EXTENSION);//will output: php
$file_basename = pathinfo($filename, PATHINFO_FILENAME);//will output: 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