3

エコー元のファイルへのフルパスを取得してから分割することが可能かどうか疑問に思っています

例: echo $currentDir //output EX: /home/user/public_html/scrips/code/test/ha

次に、それを 3 つのディレクトリに分割して、出力が次のようになるようにします: /home/user/public_html/scripts

これは可能ですか?

4

2 に答える 2

5

ファイルが現在実行されているディレクトリを取得するには、 PHP 5.3__DIR__またはdirname(__FILE__)< PHP 5.3 を使用します。

パスをたどって、文字列操作でいくつかのレベルを上げることができます。

$path = implode(
    DIRECTORY_SEPARATOR, 
    array_slice(explode(DIRECTORY_SEPARATOR, $path),0,-3)
);

あるいは、これはうまくいくはずです...

$path = realpath(
    rtrim($path, DIRECTORY_SEPARATOR) . str_repeat('..' . DIRECTORY_SEPARATOR, 3)
); 

パスは経由で別の文字列に変換される場合がありますがrealpath()(同じ場所を指しますが)。

于 2012-05-12T02:58:08.537 に答える
0

私がしていることは:

  1. ファイルタイプのクラスを作成します。
  2. プロジェクトのメインフォルダーの定数をいくつか定義して、作業が楽になるようにします。
  3. そのクラス内にメソッドを作成してパスを取得します。
  4. 関数の結果をプロパティに割り当てると、私の生活も楽になります。

そのような:

class Image {
   private $temp_path;
   protected $upload_dir = 'imagens';

   public function directory() {
       return $this->upload_dir . DIRECTORY_SEPARATOR . $this->filename;
   }
}

// If you want only the extension:

private function _ext() {
    return strrchr($this->filename, ".");
}

もちろん、クラスにはさらに多くのことがありますが、アップロードされたファイルのパスを取得するために必要なのはそれだけです。オブジェクト指向のPhPを使用して、ファイルアップロードページでプロパティを直接設定してクラスに渡すだけです。これにより、ファイルとそのプロパティの記録と制御を向上させるために、プロパティをDBに保存することもできます。

全体についてさらに情報が必要な場合は、質問してください。

幸運を祈ります。

于 2012-05-12T03:20:59.727 に答える