0

基本的に、phpスクリプトを含むフォルダーがあり、そのフォルダーにスクリプトを含む別のフォルダーがあります。各フォルダーの index.php スクリプトに同じヘッダー ファイルをロードしたいと考えています。含めるスクリプトは、inclues フォルダーにある nav.php です。

includes
   nav.php
Folder1
   header.php
   index.php
   Folder2
      index.php

私はこれをしたい:

if getcwd() = 'Folder2'{
    include('../../includes/nav.php');
}else{
    include('../includes/nav.php');

しかし、問題は getcwd() がパス全体を文字列で返すことですが、cur ディレクトリ名だけが必要です。ディレクトリ名以外のすべてを削除するために、文字列を具体的に切り取るにはどうすればよいですか。すべての解決策は知っておくと良いですが、そのように文字列をスライスする機能に特に興味があります。

4

4 に答える 4

1

インクルード パスを古い PHP の_ DIR _ または dirname(_ FILE _)からの相対パスにします。または$_SERVER['DOCUMENT_ROOT']に。現在のディレクトリに移動しないでください。

include(__DIR__.'/../../includes/nav.php'); // Folder 2 files
include(__DIR__.'/../includes/nav.php'); // Folder 1 files

それが役に立てば幸い!

于 2012-10-18T17:10:22.817 に答える
0

してみてください::

if (basename(dirname(__FILE__)) = 'Folder2'){
    include('../../includes/nav.php');
}else{
    include('../includes/nav.php');
}
于 2012-10-18T17:16:41.653 に答える
0

特殊変数を使用できます

$_SERVER['PHP_SELF']

URLのDNS名の後のすべてを一覧表示します。その時点で最も簡単な方法は、区切り文字として「/」を使用してexplode関数で分割し、配列の最後の要素(phpファイル名)を削除してから、implodeを使用して文字列全体を単一の変数。

これにより、Webルートから現在のディレクトリが得られます。

于 2012-10-18T17:18:39.377 に答える
0

関数を参照してください:

basename

ここでそれについて読んでください:http://php.net/manual/en/function.basename.php

basename( getcwd()) 

パスからフォルダー名を返す必要があります。basename と dirname の例を次に示します。

#> pwd
/home/user
#> php
<?php
echo getcwd() . "\n" ;
echo dirname( getcwd()) . "\n" ;
echo basename( getcwd()) . "\n" ;
?>
/home/user
/home
user
于 2012-10-18T17:07:03.607 に答える