人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【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
という風にしたいです。

●質問者: pandeiro_jp
●カテゴリ:インターネット ウェブ制作
✍キーワード:CSS INDEX PHP SKIN ディレクトリ
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● tadashi0805
●7ポイント

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];

?>


2 ● Asuca
●5ポイント

同じページ内で

$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

◎質問者からの返答

$skin_dir=pandeiro245

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


3 ● chankaz
●23ポイント

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

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

> 例えば

> ./skin/pandeiro245/index.php

> に

> ./skin/pandeiro245/default.css

> を適用したいとして、

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

だったら

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

で済むのでは?

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

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

◎質問者からの返答

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

えっと具体的にいうと、

./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">

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

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

すみません。


4 ● ワテ
●22ポイント

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

やりたいこととしては

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

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

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

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

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

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

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

$skin_dir = array_pop($list);

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

http://www.udsj.com/


5 ● ワテ
●24ポイント

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

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

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/


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ