3

次のディレクトリ構造を取ります。

  • Parent1
    • 子フォルダ
      • 子フォルダ1
      • 子フォルダ2

子フォルダ2へのパスは次のようになります。

Parent/Child folder/Child Folder 2

ただし、別の有効なパスも

Parent/Child folder/Child Folder 1/../Child Folder 2

パスを「単純化」する方法、または次のようなパスを変換する方法はありますか?

Parent/Child folder/Child Folder 1/../Child Folder 2

Parent/Child folder/Child Folder 2

opendir($directory)私はあなたに与えるハンドルからファイル名を抽出する方法を見つけようとしていましたが、私はまだこれを行う方法を見つけていません。また、「単純化」よりもいくつかの用語やより良い表現が必要だと確信していますが、何を検索すればよいかわかりませんでした。「パスを単純化する」phpはあまり役に立ちませんでした。

編集:

realpathが完全なフルパスを提供することに気づきました。のように相対的なものは得られませんがParent/Child folder/Child Folder 2C:\Path\To\Server\Directory\Parent\Child Folder\Child Folder 2 それは少し残念ですが、文字列を操作することで元に戻すことができます。

4

3 に答える 3

3

パスが実際に存在する場合は、を使用realpath()して相対パス部分を解決できます。また、シンボリックリンクも解決します。

于 2012-12-03T00:16:10.737 に答える
1

試すrealpath()

$path = realpath('Parent/Child folder/Child Folder 1/../Child Folder 2');
于 2012-12-03T00:16:14.740 に答える
1

関数で試してくださいrealpath()

于 2012-12-03T00:16:57.393 に答える