PHP Tips [その他]

現在実行中のスクリプト名(ファイル名)を取得する

実行中のスクリプト毎にプログラムの動きや表示を変えたいことがあると思います。
そのような時に、現在実行中のスクリプト名(ファイル名)を取得する方法です。

次の(1)(2)の手順で行います。
(1)__FILE__で現在実行中のスクリプトのフルパスを取得
(2)取得したフルパスから「substr」関数と「strrpos」関数を組み合わせてスクリプト名を取得


(1)__FILE__でスクリプトのフルパスが取得できます。
これを利用して以下のように現在実行中のスクリプトのフルパスを取得します。
------------------------------------------------------------
<?php
    $script_file_name = str_replace('\\', '/', __FILE__);
    echo $script_file_name;
?>
------------------------------------------------------------

実行すると、例えば「c:Program_files/Apache Software Foundation/Apache2.2/htdocs/test.php」
のように表示します。
※「str_replace」関数を使用しているのは、パスの区切りがUNIX/Linux環境では「/」、Windows
環境では「\」で、どちらの環境でも対応できるように「/」に統一するためです。


(2)「substr」関数と「strrpos」関数を組み合わせてスクリプト名を取得します。
------------------------------------------------------------
<?php
    $script_file_name = str_replace('\\', '/', __FILE__);
    echo substr($script_file_name, strrpos($script_file_name, '/') + 1);
?>
------------------------------------------------------------

「strrpos」関数は、検索したい文字列を検索対象の文字列の最後から探すので、
ここでは最後から検索して「/」が最初に出現する位置の次(+1)とすれば「test.php」の「t」の
位置がわかります。

「substr」関数は、指定した開始位置から指定文字数の文字列を取得できるので、フルパスを格納
した変数「$script_file_name」の最後に出てくる「/」の次以降を「substr」関数で取得します。

「substr」関数の第3引数を省略すると、開始位置から最後までが取得できるので、ここでは第3引
数は省略します。

これでフルパスの中からスクリプト名「test.php」が取得できるので、実行すると「test.php」
と表示します。