7

PHP クラスを作成していますが、クロスプラットフォーム対応にしたいと考えています。特定のフォルダー名を見つけるには、パスを分解する必要があります。区切り文字には何を選択しますか? パスには、UNIX では「/」、Windows では「\」が含まれます。

この特定の例では、インクルード ファイルが保存されているディレクトリの名前を取得したいと考えています。私はこれを使用します:

private function find_lib_dir() {
    $array_path = explode('/', __DIR__);
    return $array_path[count($array_path)-1];
}

この状況で (そしてより一般的に)、Windows と UNIX の両方で確実に動作するようにするにはどうすればよいでしょうか?

ありがとう!

4

4 に答える 4

9

DIRECTORY_SEPARATOR次のように使用できます。

$array_path = explode(DIRECTORY_SEPARATOR, __DIR__);
于 2013-02-01T19:43:24.203 に答える
0

DIRECTORY_SEPARATOR定数を使用する必要があります

于 2013-02-01T19:43:04.960 に答える
0

私はこのようなことをします:

private function find_lib_dir() {
    // convert windows backslashes into forward slashes
    $dir = str_replace("\\", "/", __DIR__);

    $array_path = explode('/', $dir);
    return $array_path[count($array_path)-1];
}

あなたの特定の例では、他の回答が提供したことを行うことができます。ただし、自分で文字列を作成している場合は、次のようになります。

__DIR__ . '/path/to/dir';

そしてそれを爆発させようとすると、UNIX システムと Windows システムで問題が発生します。この状況では、すべてのバックスラッシュをスラッシュに置き換えるのが最善です (imo) (これは両方のシステムでサポートされています)。そして、スラッシュに基づいて爆発します。

于 2013-02-01T19:53:23.503 に答える