gpt4 book ai didi

PHP目录分隔符,强制正斜杠;非侵入性

转载 作者:行者123 更新时间:2023-12-02 02:34:03 24 4
gpt4 key购买 nike

每当我使用 PHP 时(经常),我通常在 Windows 机器上工作,但是我(尝试)开发与平台无关的应用程序;一个主要问题是目录分隔符的使用。

正如许多人所知,在 Windows 环境中使用 PHP 执行任何文件系统工作时,您可以使用正斜杠代替反向斜杠,PHP 会在幕后对其进行排序。当使用字符串文字将路径传递到 fopen() 时,这一切都很好。管他呢;但是在检索路径时,可以是 __FILE__或使用 realpath() 扩展,检索到的路径当然使用操作系统适当的斜杠。另外,我注意到尾部斜杠存在一些不一致的地方。一次或两次__DIR__已附加一个(反斜杠)和 realpath()太(我更喜欢尾部斜杠,但不是间歇性的)

这显然是字符串比较的问题,因为而不是这样做:

compare_somehow('path/to/file.php', __DIR__);

为了可靠性,我不得不去:

compare_somehow('path/to/file.php', rtrim(strtr(__DIR__, '\\', '/'), '/') . '/');

这看起来工作量很大。当然,我可以将它放入一个函数中;现在我的所有 OO 代码中都陷入了任意函数​​依赖的困境。

我知道 PHP 并不完美,需要进行调整,但肯定存在一些与平台无关的解决方法来强制文件系统命中检索正斜杠路径,或者至少是一种非侵入式的方式来引入类-用于此目的的独立函数。

摘要问题(s):

  • 是否有一些神奇的(虽然可靠)解决方法、破解或其他方式强制 PHP 回退正斜杠文件系统路径,而不管服务器操作系统如何?
  • 我假设上述问题的答案是否定的,所以继续;我可以采取哪些措施来强制执行正斜杠(或任何选择,实际上)作为目录分隔符?我假设通过上述过滤功能,但现在它应该去哪里?
<小时/>

所有内容都使用正斜杠。即使主机操作系统分隔符是 #*&@ .

最佳答案

正如我所评论的,我真的不明白为什么你必须这样做(我对你正在解决的具体问题的快速描述感兴趣),但这里有一个可能的解决方案,使用 __FILE__ 的输出作为一个例子:-

$path = str_replace('\\', '/', __FILE__);

See it working

无论操作系统返回什么*斜杠(我认为),这都会(应该?)工作。

不幸的是,除此之外,我不知道“一些神奇的(尽管可靠)解决方法、黑客攻击或其他方式强制 PHP 回退正斜杠文件系统路径,无论服务器操作系统如何”。我想它可以包装在一个辅助类中,但这仍然会给您的代码带来任意依赖性。

关于PHP目录分隔符,强制正斜杠;非侵入性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8162042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com