PHPスクリプトがある場合、そのスクリプト内からファイル名を取得する方法を教えてください。
また、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"
標準の文字列ライブラリ関数を使用すると、予想どおり、 はるかに速くなります 。
function chopExtension($filename) {
return substr($filename, 0, strrpos($filename, '.'));
}
インクルードに、それがどのファイルにあるのか(つまり、実際にどのスクリプト名が要求されているのか)を知らせたい場合は、次のようにします。
basename($_SERVER["SCRIPT_FILENAME"], '.php')
あなたがファイルに書いているとき、あなたは通常その名前を知っているので。
編集:Alec Tealで述べたように、シンボリックリンクを使用すると、代わりにシンボリックリンク名が表示されます。
http://php.net/manual/ja/function.pathinfo.php を参照してください。
pathinfo(__FILE__, PATHINFO_FILENAME);
これがbasename(__FILE__, ".php")
とbasename($_SERVER['REQUEST_URI'], ".php")
の違いです。
basename(__FILE__, ".php")
はこのコードが含まれているファイルの名前を示します - もしあなたがこのコードを header.php に含めそして現在のページが index.php であれば header notを返します インデックス 。
basename($_SERVER["REQUEST_URI"], ".php")
- header.php にこのコードを含めて現在のページが index.php の場合、 index not header が返されます。
これは役に立つかもしれません:
basename($_SERVER['PHP_SELF'])
includeを使っていても動作します。
アレックスの答えは正しいですが、あなたはまたそのような正規表現なしでこれをすることができます:
str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"]));
これが私が最近答えを探しているのを見つけたリストです:
//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>
これを使うこともできます。
echo $pageName = basename($_SERVER['SCRIPT_NAME']);
より一般的な方法は pathinfo() を使うことです。バージョン5.2以降、PATHINFO_FILENAME
をサポートしています。
そう
pathinfo(__FILE__,PATHINFO_FILENAME)
またあなたが必要とすることをするでしょう。
インクルードされたPHPファイルの中で実行されていても、これは私にとってはうまくいき、実行中の現在のphpファイルのファイル名が欲しいのです:
$currentPage= $_SERVER["SCRIPT_NAME"];
$currentPage = substr($currentPage, 1);
echo $currentPage;
結果:
index.php
$ argv [0]
私は$argv[0]
を使うほうがずっと簡単だとわかりました。実行スクリプトの名前は、常に$argv
配列の最初の要素です。他の回答で提案されている他のすべての方法とは異なり、この方法ではディレクトリツリーを削除するのにbasename()
を使用する必要はありません。例えば:
echo __FILE__;
は/my/directory/path/my_script.php
のようなものを返します
echo $argv[0];
はmy_script.php
を返します
これを試して
$current_file_name = $_SERVER['PHP_SELF'];
echo $current_file_name;
__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
$filename = "jquery.js.php";
$ext = pathinfo($filename, PATHINFO_EXTENSION);//will output: php
$file_basename = pathinfo($filename, PATHINFO_FILENAME);//will output: jquery.js
basename($_SERVER["SCRIPT_FILENAME"], '.php')
とbasename( __FILE__, '.php')
がこれをテストするための良い方法であると言ったように。
私にとって2番目のものを使用することは私が作っていたいくつかの検証指示のための解決策でした