Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示反斜杠的dirname(_文件__)_Php - Fatal编程技术网

Php 显示反斜杠的dirname(_文件__)

Php 显示反斜杠的dirname(_文件__),php,Php,我在我的基本目录中有一个配置文件,我正试图找出用于文件包含的目录的绝对路径。但是,windows正在路径中使用反斜杠 define( 'ABSOLUTE_PATH', dirname(__FILE__)); include( ABSOLUTE_PATH . "/includes/include.php" ); 使用此方法,它将返回此路径 C:\xampp\htdocs\websites/includes/include.php 正如你所看到的,它是前斜杠和后斜杠的混合体 解决此问题的最佳方

我在我的基本目录中有一个配置文件,我正试图找出用于文件包含的目录的绝对路径。但是,windows正在路径中使用反斜杠

define( 'ABSOLUTE_PATH', dirname(__FILE__));

include( ABSOLUTE_PATH . "/includes/include.php" );
使用此方法,它将返回此路径

C:\xampp\htdocs\websites/includes/include.php
正如你所看到的,它是前斜杠和后斜杠的混合体

解决此问题的最佳方法是什么,或者是否有更好的方法可以找到绝对路径

编辑:


我希望它使用正斜杠的原因是我正在序列化要存储在数据库中的结果。反斜杠在序列化时被删除。:)

您应该使用
目录分隔符
常量:

include( ABSOLUTE_PATH . DIRECTORY_SEPARATOR . "includes" . DIRECTORY_SEPARATOR . "include.php" );

STRU替换(“\\”、“/”、目录名(文件);为我工作。。。(请注意,对于scape第二个“\\”

在您的示例中不需要使用目录分隔符。只要使用正斜杠“/”,就可以了。Windows并不介意,它最适合*nix操作系统

请注意,目录分隔符对于分解系统提供给您的路径之类的事情很有用


From

既然反斜杠在Windows环境中是正确的路径分隔符,为什么您希望它不包含反斜杠?请注意,这种组合完全适用于include、require和related函数,我在一个项目中用这种组合得到了类似的结果,但它毫无问题。我不相信这是一个问题(Windows将两者都使用),但您可以尝试(简化的)
str\u replace(“/”,DIRECTORY\u SEPARATOR,$path)
来规范化。PHP不在乎您使用什么。它可以很好地处理混合(假定您可以获得缓存未命中)。但是,您正在寻找的是路径规范化/规范化。将起作用,但它要求路径存在;在序列化时发布解决方案的用户应保留反斜杠,否则您的序列化方法将被破坏。如果您自己编写反斜杠,则需要对其进行转义,例如
'C:\\some\\path'
。我的建议是:使用前斜杠并将整个路径规范化为前斜杠;不需要目录分隔符:
echo file\u get\u contents('C:/xampp/readme\u en.txt');
效果很好。这可能是最好的解决方案,但它会显著降低可读性。而且随着文件夹嵌套的增加,情况会很快变得更糟。请尝试:
“/includes/corp/finance/ca/include.php”
…yikes!