8

试图在我的 Windows 操作系统上设置一个 php 网站。我从某人那里得到的 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 回答