PHP常量DIRECTORY_SEPARATOR原理及用法解析


Posted in PHP onNovember 10, 2020

DIRECTORY_SEPARATOR在php是什么意思呢,在什么时候使用DIRECTORY_SEPARATOR最合理呢?下面来给各位介绍一下php DIRECTORY_SEPARATOR常量。

我们知道DIRECTORY_SEPARATOR是一个PHP常量,代表反斜杠,因为windows系统和linux系统的反斜杠不一样。在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符,在linux上路径的分隔符是"/"。

那么在PHP代码中什么时候要用DIRECTORY_SEPARATOR代表反斜杠呢?
比如这句话:

代码如下:

require_once dirname(__FILE__).DIRECTORY_SEPARATOR . './../../../wp-config.php';
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'inc/options.php';

这两句PHP代码,为什么前面部分用DIRECTORY_SEPARATOR,而后面部分却用"/"呢
众所周知,windows下的是\和/,而LINUX下的是/

在程序本地运行很正常,上传到服务器后,发现图片没有显示出来,图片链接是绝对路径 var/,而且当中带有 \ 但是我记得这个路径已经处理成相对路径的

代码如下:

$path = dirname(dirname(dirname(__FILE__))).'\\';
$search = array( $path, '\\');
$replace = array( '', '/');
return str_replace($search,$replace,$this->tempfolder).$this->filename_prefix.$public.'.jpg';

各位也可以看出来了,第一行代码的用在LINUX "\\", 就不行。

解决的办法是 用PHP 预定义常量DIRECTORY_SEPARATOR来代替'\','/'这样的路径分隔符,以前觉得既然windows,LINUX 都支持/,那都用成 / 得了,这是没错的。可是从这个例子可以看出,当要对路径字符串进行处理的时候,就比较危险了,所以最好还是用DIRECTORY_SEPARATOR吧

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP 文件上传进度条的两种实现方法的代码
Nov 25 PHP
PHP中常用数组处理方法实例分析
Aug 30 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
Nov 12 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
微信支付PHP SDK之微信公众号支付代码详解
Dec 09 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 PHP
php指定长度分割字符串str_split函数用法示例
Jan 30 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
PHP连续签到功能实现方法详解
Dec 04 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 #PHP
通过PHP实现用户注册后邮箱验证激活
Nov 10 #PHP
PHP中的异常处理机制深入讲解
Nov 10 #PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 #PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 #PHP
关于PHP求解三数之和问题详析
Nov 09 #PHP
PHP中isset、empty的用法与区别示例详解
Nov 05 #PHP
You might like
一个数据采集类
2007/02/14 PHP
php 读取文件乱码问题
2010/02/20 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
VUE实现强制渲染,强制更新
2019/10/29 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
工作自我评价怎么写
2014/01/29 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
写给医生的感谢信
2015/01/22 职场文书
心理健康教育主题班会
2015/08/13 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
导游词之峨眉山
2019/12/16 职场文书
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技