PHPスクリプトがある場合、そのスクリプト内からファイル名を取得するにはどうすればよいですか?
また、という形式のスクリプトの名前が与えられた場合jquery.js.php
、「jquery.js」の部分だけを抽出するにはどうすればよいですか?
also
は、追加の質問をしていることを示します。シーッシュ。いくつかの子供をのぞきます。
PHPスクリプトがある場合、そのスクリプト内からファイル名を取得するにはどうすればよいですか?
また、という形式のスクリプトの名前が与えられた場合jquery.js.php
、「jquery.js」の部分だけを抽出するにはどうすればよいですか?
also
は、追加の質問をしていることを示します。シーッシュ。いくつかの子供をのぞきます。
回答:
現在のファイル名を取得するには、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の場合、インデックスではなくヘッダーを返します。
basename($_SERVER["REQUEST_URI"], ".php")
-このコードをheader.phpに含めて使用し、 現在のページがindex.phpの場合、ヘッダーではなくインデックスを返します。
SCRIPT_FILENAME
かREQUEST_URI
?私はどちらもサーバー変数であることを知っていますがREQUEST_URI
、ユーザーが改ざんした値ではありませんか?「URIインジェクション」の脅威を可能にする
basename($_SERVER["REQUEST_URI"], ".php");
は、リンクがの形式の場合、フォルダの名前を返しますhttp://example.com/somefolder
。一方では、basename($_SERVER['PHP_SELF'], ".php");
常にこのような場合には、スクリプトの名前を返しますindex
。
これは役立つかもしれません:
basename($_SERVER['PHP_SELF'])
includeを使用している場合でも機能します。
.php
、OPが排除しようとしていた最後に
basename($_SERVER['PHP_SELF'], ".php");
アレックスの答えは正しいですが、次のような正規表現なしでこれを行うこともできます。
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
より一般的な方法は、pathinfo()を使用することです。バージョン5.2以降、をサポートしていますPATHINFO_FILENAME
。
そう
pathinfo(__FILE__,PATHINFO_FILENAME)
必要なことも行います。
これを試して
$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