▼Menu

ディレクトリ名の取得とその応用(PHPのexplode関数を使用)

表示させるウェブページのディレクトリ(フォルダ)名をPHPで取得したいことがあります。これができれば、PHPスクリプトを簡単にしたり、ファイル数を減らしたりできます。私はPHPで取得したディレクトリ名をアクセス解析のログファイル名に使用してみました。


広告

PHPを使ってファイルのディレクトリ名を取得します

文字列を区切り文字で分割するには、普通はsplit()関数を使います。しかし、split()関数はPHP 5.3.0 で非推奨になったらしい。代わりにexplode()関数を使うことにしました。この方が動作が速いようです。

PHPの explode() 関数の使い方

explode() の機能は文字列を区切り文字($delimiter)で分割した文字列の 配列楽天 を返すものです。

explode($delimiter,$string[,limit])

この配列の各要素は、元の文字列($string)を文字列($delimiter)で区切った、部分文字列になります。

limitに正の値が指定された場合の、返される配列は、最大limit数の要素になり、その最後の要素には$stringの残りの部分が全て含まれます。

もし、limitが負の場合は、後ろからlimit個の要素を削除して、他の全ての要素が返されます。(Ver.5.1.0より)

PHPの explode() 関数を使ってファイルのディレクトリ(フォルダ)名を取得します

<?php
$s_name=$_SERVER['SCRIPT_NAME'];
$dir_a=explode("/",$s_name,-1);
?>

この例では、「$_SERVER['SCRIPT_NAME']」は、サーバーのドメイン名の後ろのパスとファイル名を表しています。例えば「hogehoge.jp/dir1/dir2/example.php」なら「/dir1/dir2/example.php」を表しています。

そこで、PHPの explode() 関数を使ってファイルのディレクトリ名に分解します。この中のディレクトリ(フォルダ)名「dir1」を取り出すのなら「$dir_a[1]」とします。この中の「dir2」を取り出すのなら「$dir_a[2]」とします。

「$limit」が「-1」になっているのは、最後の文字列がファイル名なのでこれを削除する為です。この「-1」は、今回の場合は無くても動作に影響しません。

「$_SERVER['SCRIPT_NAME']」を直接explode()で処理しようとするとエラーとなります。だから、あらかじめ、「$_SERVER['SCRIPT_NAME']」を「$s_name」に代入しています。

取得したディレクトリ名をアクセス解析のログファイル名に適用した例

有限工房のfstatというアクセス解析の、解析ページに付けるスクリプトは次のようなものです。これを各ファイルのボディタグ内に記述します。これを外部ファイルにして、PHPでインクルードして呼び出しています。

私のウェブサイトはジャンル毎にディレクトリ(フォルダ)を分けていて、アクセス解析もディレクトリ毎に行なっています。この方法は、PHPの explode() 関数を使ってファイルのディレクトリを取得して、ログファイル名に変換するのにとても好都合なのです。

下記のスクリプトで、ログファイル名は「<?php echo $dir_a[1]; ?>」で置き換えています。ちなみに「<?php echo $dir_a[0]; ?>」は、最初の「/」より前なので何もありません。

<?php
$s_name=$_SERVER['SCRIPT_NAME'];
$dir_a=explode("/",$s_name,-1);
?>
<script type="text/javascript">
<!--
  buf = escape(parent.document.referrer);
  ref = "";
  for (i = 0; i < buf.length; i++) {
  str = buf.charAt(i);
  ref += (str == "+") ? "%2B" : str;
  }
  scr = screen.width+","+screen.height+","+screen.colorDepth;
  document.write('<img SRC="http://hogehoge.jp/***/***/hoge.cgi?LOG=<?php echo $dir_a[1]; ?> />');
// -->
</script>
<noscript><img src="http://hogehoge.jp/***/***/hoge.cgi?LOG=<?php echo $dir_a[1]; ?>" /></noscript>

取得したディレクトリ名をアクセス解析のログファイル名に適用すると、今までログファイル名ごとに必要だったファイルが、ひとつで済むようになりました。つまり各ジャンル毎に必要だったインクルードファイル(約20個)が1個になりました。

ページのキーワードを使って楽天広告スクリプトを自動生成した例

次に、PHPの explode() 関数を使った別の応用例を紹介します。私は、ウェブページのキーワード群をPHPを使って文字列に登録して、メタタグのキーワードとして取得して使っています。

このキーワード群の前から2個のキーワードをPHPの explode() 関数を使って取得して、楽天アフィリエイト広告のスクリプトを自動的に生成させてみました。

スポンサーリンク

この方法だと、各ページでキーワードが異なっているので、生成されたコードも各ページ別々のものとなります。また、各ページで最適な広告が出ますので、効果が大きいと思われます。グーグルアドセンスのリンクユニットに似ています。各ページのコンテンツにマッチした広告となります。

 
Main Menu |Mobile |Top Page |電気、電器 |工夫と製作 |アンテナ |デジタル放送 |修理技術1 |修理技術2 |修理過去ログ |電気柵 |生活情報 |健康情報 |名所旧跡 |ネット環境 |WordPress |写真集 |English Top
リンク集 |Sitemap |お問合せ |Pポリシー |修理掲示板
ネット環境 Menu |BBS迷惑書込 |迷惑Mail |Mail送信規制 |nPOP使い方 |BBSログ変換 |過去ログ表示 |MailCGI改造 |HPフォルダ構造 |サーバ引越 |英語サイト作り方 |二ヶ国語相互リンク |携帯サイト作り方 |XHTML Basic |XHTML Mobile P |携帯アクセス制御 |PC携帯両用サイト |サブドメイン同期 |XHTMLに書換 |TEXTメニュー |新ウィンドウに表示1 |新ウィンドウに表示2 |外部トラッキングコード |メニュー配置 |HTML一括変更 |ファイル取込 |ヘッドタグ共通化 |外部CSS |CSSコマンド |印刷用CSS |標準,互換モード |段組 |表示の速いHP |HP横幅 |HP背景 |HP文字 |HP見出し |HPタイトル |画像使い方 |altとtitle属性 |アクセスアップ |サイトマップ作成 |RSS配信 |自ドメインRSS |RSS使い方 |htaccess転送 |パラメータ削除 |wwwの有無と統一 |アクセス制限 |Adsenseクリック規制 |Adsense表示規制 |Google広告配置 |チャネルの設定 |ブログ人に広告配置 |ランダム画像切替 |デザイン自動切替 |フォルダ名取得 |Google+1ボタン |いいねボタン |Facebookのコメント |HPビルダ起動時間 |Expression Web |複数パソコンHP更新 |FFFTP使い方 |文字大きさ |モニタの選び方 |タッピング |ページ内検索 |ショートカットキー |Thumbs.db |日本語FEP |上手な日本語変換 |データ伝送 |MTUとMSS
山里の素人農業 |Daii-Wiki |私のブログ |Car Evolution |Tomy's HP |ページの先頭
 
 
as76.net
RSS
 
楽天市場
広告
Valid XHTML 1.0
Only OGP error
更新日:2011/12/11