【PHP】PHPでそのファイルが所属しているディレクトリ名を変数に代入する方法を教えてください。


例えば
./skin/pandeiro245/index.php

./skin/pandeiro245/default.css
を適用したいとして、

$skin_dir=pandeiro245

となって

./skin/pandeiro245/index.php
のhead部分に

<link href="./skin/{$skin_dir}/default.css" rel="stylesheet" type="text/css">

と宣言すればOK
という風にしたいです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/03/30 23:57:48
  • 終了:2006/04/01 00:25:02

回答(6件)

id:tadashi0805 No.1

tadashi0805回答回数287ベストアンサー獲得回数292006/03/31 00:34:03

ポイント7pt

http://php.oss.eznetsols.org/manual/ja/index.php

超手抜きですが、以下のスクリプトで、実行してるPHPファイル自体が置かれているディレクトリが抜き出せます。

このスクリプトをPHPファイルの先頭で実行するようにしておき、$dir[$i]の値を適当な変数に代入しておけば、PHPファイル中のHTML文書部分で、質問の<LINK>タグが出て来た時点でディレクトリを置換できます。

$dir = explode('/', $_SERVER['SCRIPT_FILENAME']);

if (substr($_SERVER['SCRIPT_FILENAME'], 0, 1) == '/')

$i = 1;

else

$i = 0;

for(;; $i++) {

if ($dir[$i] == "")

break;

}

$i -= 2;

echo $dir[$i];

?>

id:Asuca No.2

Asuca回答回数281ベストアンサー獲得回数42006/03/31 00:36:18

ポイント5pt

同じページ内で

$skin_dir=pandeiro245

が宣言されてるなら

<link href="./skin/{$skin_dir}/default.css" rel="stylesheet" type="text/css">

<link href="./skin/<? echo "$skin_dir"; ?>/default.css" rel="stylesheet" type="text/css">

これでどうかな?

http://q.hatena.ne.jp/1143730664

id:pandeiro_jp

$skin_dir=pandeiro245

と宣言されるための質問です・・・。

2006/03/31 02:01:09
id:chankaz No.3

chankaz回答回数53ベストアンサー獲得回数32006/03/31 03:07:24

ポイント23pt

http://q.hatena.ne.jp/1143730664

ご質問の意図がよくわからないのですが、

> 例えば

> ./skin/pandeiro245/index.php

> に

> ./skin/pandeiro245/default.css

> を適用したいとして、

これって2つとも同じディレクトリに置いてあるってことですよね。

だったら

<link href="./default.css" rel="stylesheet" type="text/css">

で済むのでは?

もし違うことを聞きたいのであれば、例題(上記引用部分)が悪いと思います。

質問文ももっと具体的に示された方がいいかと。

id:pandeiro_jp

あ、そっかそうなりますよね。

えっと具体的にいうと、

./index.php

のスキンが

./skin/pandeiro245/index.tmp.html

なんです。

./skin/pandeiro245/index.tmp.html

のソースに

<link href="./default.css" rel="stylesheet" type="text/css">

と書くと、

./index.php

の出力は

<link href="./default.css" rel="stylesheet" type="text/css">

となってしまいますよね。

これを

<link href="skin/pandeiro245/default.css" rel="stylesheet" type="text/css">

にしたいという意味です。

僕の質問の仕方が悪かったです。

すみません。

2006/03/31 03:15:11
id:wate_wate No.4

ワテ回答回数45ベストアンサー獲得回数32006/03/31 03:11:58

ポイント22pt

質問の意味が文面からちょっと微妙なのですが

やりたいこととしては

現在のディレクトリにあるCSSを適用したいってことでしょうか?

もしそうであれば、PHPファイルのパスが取れればいいようなので

ディレクトリ名だけである必要がないので

$path = dirname($_SERVER["SCRIPT_NAME"]);

現在のドキュメントルートからのパスが取れると思います。

現在のディレクトリ名だけという点であれば

$list = explode("/",dirname($_SERVER["SCRIPT_NAME"]));

$skin_dir = array_pop($list);

でいけるのではないでしょうか?

http://www.udsj.com/

id:wate_wate No.5

ワテ回答回数45ベストアンサー獲得回数32006/03/31 03:48:04

ポイント24pt

リベンジというか・・・・

もしかして、質問の内容って

Smartyのテンプレートの切り替えを行いたいって事でしょうか?

だとすれば、もう少し違った書き方ができると思います。

$smarty->assign("skin_dir","./skin/");

$smarty->assign("skin_name","スキン名");

テンプレート側に

<link href="{$skin_dir}{$skin_name}/default.css" rel="stylesheet" type="text/css">

こんな感じでいかがでしょう?

http://www.udsj.com/

id:yoski No.6

yoski回答回数13ベストアンサー獲得回数02006/03/31 12:12:56

ポイント32pt

http://jp.php.net/manual/ja/function.basename.php

$skin_dir = basename(dirname(__FILE__));

という感じでしょうか。

スクリプトが ルートディレクトリ (/) 直下にある場合などは正しい結果にならないので気をつけてください。

id:pandeiro_jp

解決しましたありがとうございました!!

2006/04/01 00:22:57

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません