phpwind获取目录函数实现原理不解?

发布于 2021-11-10 13:32:45 字数 887 浏览 800 评论 5

我在测试phpwind8.3的一个获取目录的函数,代码如下:

<?php
	echo __FILE__;
	echo "<br/>";
	/**
 	* 获取目录路径
 	*
 	* @param string $path 文件路径
 	* @return string
 	*/
	function getdirname($path = null) {
	if (!empty($path)) {
		if (strpos($path, '\') !== false) {
			return substr($path, 0, strrpos($path, '\')) . '/';
		} elseif (strpos($path, '/') !== false) {
			return substr($path, 0, strrpos($path, '/')) . '/';
		}
	}
	return './';
	}
	echo getdirname(__FILE__);
	echo "<br/>";
	echo getdirname();
?>

最后结果输出为:

D:wampwwwmy_phplearngetdirnamegetdirname.php
D:wampwwwmy_phplearngetdirname/
./

不解的是,为什么

strpos($path, '/') !== false

条件会成立?整个路径都没有/啊,有的只是

求助!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

筱武穆 2021-11-10 16:28:30

引用来自“Deepseath”的答案

尝试写了下注释。

<?php
function getdirname($path = null) {
    //返回给定路径的所在目录名路径
    //同PHP内置函数类似,但会在返回的目录名路径结尾后强制加入“/”
    if (!empty($path)) {
        //如果给定路径不为空
        if (strpos($path, '\') !== false) {
            //判断路径的系统分隔符是否为(Win系统)
            return substr($path, 0, strrpos($path, '\')) . '/';//截取最后一个系统分隔符前的部分(路径所在的目录)并在结尾加入“/”
        } elseif (strpos($path, '/') !== false) {
            //判断路径的系统分隔符是否为/(其他系统)
            return substr($path, 0, strrpos($path, '/')) . '/';
        }
    }
    return './';
}
?>

把昨日还给我 2021-11-10 16:24:44

第一个判断就不是判断Win系统的“”的么。因为需要转义所以在写的时候需要写成“\”。

凡尘雨 2021-11-10 16:15:32

引用来自“Deepseath”的答案

呵呵,是针对非Win操作系统的,比如Linux下的路径一般格式为:/home/test/www

其实感觉这个函数与php的内置函数dirname类似,只不过会在目录的结尾加入“/”,而dirname没有

把回忆走一遍 2021-11-10 16:03:55

呵呵,是针对非Win操作系统的,比如Linux下的路径一般格式为:/home/test/www

其实感觉这个函数与php的内置函数dirname类似,只不过会在目录的结尾加入“/”,而dirname没有

如日中天 2021-11-10 16:03:45

尝试写了下注释。

<?php
function getdirname($path = null) {
    //返回给定路径的所在目录名路径
    //同PHP内置函数类似,但会在返回的目录名路径结尾后强制加入“/”
    if (!empty($path)) {
        //如果给定路径不为空
        if (strpos($path, '\') !== false) {
            //判断路径的系统分隔符是否为(Win系统)
            return substr($path, 0, strrpos($path, '\')) . '/';//截取最后一个系统分隔符前的部分(路径所在的目录)并在结尾加入“/”
        } elseif (strpos($path, '/') !== false) {
            //判断路径的系统分隔符是否为/(其他系统)
            return substr($path, 0, strrpos($path, '/')) . '/';
        }
    }
    return './';
}
?>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文