8

私のWindows OSでPHP Webサイトをセットアップしようとしています。誰かから入手したPHPコードには、次のような行があります

$base_path = realpath('./../').'/'; 

これは次のような文字列になりますc:\abc\xyz/

強制的に付属させるには、Windowsでどのような設定を行う必要がありますか/。について読みましDIRECTORY_SEPERATORたが、気になるところがいろいろあるので、リアルパスが出てくるようにできれば/大変助かります。

4

3 に答える 3

7

DIRECTORY_SEPARATOR関数を単純化するために条件の代わりに定数を使用するティモシーの答えのバリエーション。

function platformSlashes($path) {
    return str_replace('/', DIRECTORY_SEPARATOR, $path);
}

$path = "/some/path/here";
echo platformSlashes($path);
于 2016-12-06T15:07:40.093 に答える
5

バックスラッシュは、Windows プラットフォームのディレクトリ区切り記号です。しかし、私が理解し、経験したことから、パスを解決するとき、PHP スクリプトは引き続きスラッシュで動作します。結果として、すべてのコードをスラッシュで書くことができ、それについて心配する必要はありません。フォワード/バックスラッシュは、セットアップ/インストーラー スクリプトのように、ユーザーへのパスを表示する場合にのみ重要です (サイトのほとんどのユーザーは、ディレクトリ構造について知る必要も、サービスが実行されているプラ​​ットフォームを気にする必要もありません)。 )。プラットフォームを識別し、必要に応じてスラッシュを置き換える表示関数を作成し、表示する前にこれを介してパスを渡すことができます。以下は、私が提案していることの例ですが、私はテストしていません。

<?php
function platformSlashes($path) {
    if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
        $path = str_replace('/', '\\', $path);
    }
    return $path;
}

$path = "/some/path/here";
echo platformSlashes($path);
于 2013-02-07T04:37:09.527 に答える
1

あなたが持っている文字列を置き換えるだけです:

$base_path = realpath('./../') . '/';
$base_path_mod = str_replace('\\', '/', $base_path);
于 2013-02-07T04:36:36.117 に答える