正斜杠和反斜杠的区别

ying987 2010-12-08 10:12:02
1、经常在写路径的时候突然不知道改用正斜杠还是反斜杠,测试发现有时候两个可以通用,有时候则不可以,有谁有总结过的麻烦贴出来共享下。
2、偶然看到一个函数is_dir(filename) ,函数功能是判断给定文件名是否是一个目录,请问什么才是目录,请具体给出个例子说明?我是在一个文件上传类中看到的,搞不明白为什么要加这么一个判断,有什么作用?

public function upload($savePath ='')
{
//如果不指定保存文件名,则由系统默认
if(empty($savepath)) {
$savePath = $this->savePath;
}
// 检查上传目录
if(!is_dir($savePath)) {
// 检查目录是否编码后的
if(is_dir(base64_decode($savePath))) {
$savePath = base64_decode($savePath);
}else{
$this->error = '上传目录'.$savePath.'不存在';
return false;
}
}else {
if(!is_writeable($savePath)) {
$this->error = '上传目录'.$savePath.'不可写';
return false;
}
}

...全文
1758 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
luanjian_1234 2010-12-09
  • 打赏
  • 举报
回复
windows和linux环境区别! win下面物理路径是\ ,linux下是/
在-云端 2010-12-08
  • 打赏
  • 举报
回复
linux下的目录的定义你可以参考下linux系统管理类似的书籍!里面有详细说明!
沪php攻城师 2010-12-08
  • 打赏
  • 举报
回复
目录就是文件夹,文件夹就是目录,判断是不是目录就是判断是不是文件夹,也就是文件夹是否存在
在-云端 2010-12-08
  • 打赏
  • 举报
回复
问题1:1、经常在写路径的时候突然不知道改用正斜杠还是反斜杠,测试发现有时候两个可以通用,有时候则不可以,有谁有总结过的麻烦贴出来共享下。
答:主要是windows和linux环境区别! win下面物理路径是\ ,linux下是/ .

问题2:偶然看到一个函数is_dir(filename) ,函数功能是判断给定文件名是否是一个目录,请问什么才是目录,请具体给出个例子说明?我是在一个文件上传类中看到的,搞不明白为什么要加这么一个判断,有什么作用?
答:目录在windows和linux下的精确定义都不同.不过简单点的话你可以把他们都理解成是可以装文件和其他目录的结点.类似于文件夹.至于你在3楼说的这个问题,是用于判断当前路径是否是个目录,相当于文件夹!这样你就清楚怎么回事了吧!在linux下后缀名是无效的,可以任意取.这点和win下面不一样!
ying987 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 heyli 的回复:]

统一用 / 也可以直接用 DIRECTORY_SEPARATOR 来得到系统分隔符
为什么要判断 确保你要上传的文件夹存在 不然移动到那去?
PHP code

var_dump(is_dir('a_file.txt')) . "\n";
var_dump(is_dir('bogus_dir/abc')) . "\n";

var_dump(is_dir('..')); //one di……
[/Quote]
请看清楚判断是if(!is_dir($savePath)) //如果不是目录的话才执行,好像不是检查文件夹是否存在吧?
沪php攻城师 2010-12-08
  • 打赏
  • 举报
回复
测试发现有时候两个可以通用
你到LINUX下就会有区别了,所以还是都用反斜杠吧
  • 打赏
  • 举报
回复
一个是转义,一个就是斜杠、、、
heyli 2010-12-08
  • 打赏
  • 举报
回复
统一用 / 也可以直接用 DIRECTORY_SEPARATOR 来得到系统分隔符
为什么要判断 确保你要上传的文件夹存在 不然移动到那去?

var_dump(is_dir('a_file.txt')) . "\n";
var_dump(is_dir('bogus_dir/abc')) . "\n";

var_dump(is_dir('..')); //one dir up


ying987 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 heyc1998 的回复:]

问题1:1、经常在写路径的时候突然不知道改用正斜杠还是反斜杠,测试发现有时候两个可以通用,有时候则不可以,有谁有总结过的麻烦贴出来共享下。
答:主要是windows和linux环境区别! win下面物理路径是\ ,linux下是/ .

问题2:偶然看到一个函数is_dir(filename) ,函数功能是判断给定文件名是否是一个目录,请问什么才是目录,请具体给出个例子说明?我是在一个文……
[/Quote]
我测试is_dir函数发现D:\DedeAMPZ\WebRoot\Default\shuguangcms\Attachments\product是目录,而Attachments\product不是目录,这个怎么解释呢?
LiveAsaMonster 2010-12-08
  • 打赏
  • 举报
回复

目录在windows和linux下的精确定义都不同.不过简单点的话你可以把他们都理解成是可以装文件和其他目录的结点.类似于文件夹.至于你在3楼说的这个问题,是用于判断当前路径是否是个目录,相当于文件夹!这样你就清楚怎么回事了吧!在linux下后缀名是无效的,可以任意取.这点和win下面不一样!
mosquitowang 2010-12-08
  • 打赏
  • 举报
回复
区别很大的,听起来很容易区别,但是只有用多了才行哦
ihefe 2010-12-08
  • 打赏
  • 举报
回复

//DIRECTORY_SEPARATOR是php常量 ,路径斜杠问题解决
define('DS', DIRECTORY_SEPARATOR);
fxs_2008 2010-12-08
  • 打赏
  • 举报
回复
统一用 /
win和linux都能识别
heyli 2010-12-08
  • 打赏
  • 举报
回复
没看清
他这么写目的就是防止$savePath传进来这个值是 base64_encode编码过的

21,894

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧