php中常量DIRECTORY_SEPARATOR用法深入分析

本文实例讲述了php中常量DIRECTORY_SEPARATOR用法。分享给大家供大家参考。具体如下:

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程序设计有所帮助。

(0)

相关推荐

  • php 静态变量与自定义常量的使用方法

    ⚑ 静态变量的声明与使用 ⚑ 自定义常量的使用方式 什么是静态变量? 静态变量是指用static声明的变量,这种变量与局部变量的区别是,当静态变量离开了它的作用范围后,它的值不会自动消亡,而是继续存在,当下次再用到它的时候,可以保留最近一次的值. 下面举例: 复制代码 代码如下: <?php function add() { static $i=0; $i++; echo $i; } add(); echo " "; add(); ?> 这段程序中,主要定义了一个函数add

  • PHP 得到根目录的 __FILE__ 常量

    1.PHP 的 __FILE__ 常量(如何得到根目录) dirname(__FILE___) 函数返回的是脚本所在在的路径. 比如文件 b.php 包含如下内容: $basedir = dirname(__FILE__); ?> 如果b.php被其他目录里的a.php文件require 或者 include 去引用的话. 变量$basedir 的内容还是b.php所在的那个文件夹的路径. 而不是变成a.php文件所在的目录. dirname(__FILE__) 一般会返回文件所的当前目录到系统

  • thinkphp中常用的系统常量和系统变量

    ----------------------------------------模板中使用的系统变量和常量----------------------------------------(1)系统变量:在模板中输出系统变量:包括server.env.session.post.get.request.cookie      {$Think.server.script_name} // 输出$_SERVER变量{$Think.session.session_id|md5} // 输出$_SESSIO

  • PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)

    为什么要谨慎使用PHP中的常量? Zend Framework文档中写道:常量包含数字字母字符和下划线,数字允许作为常量名. 常量名的所有字母必须大写.类常量必须通过 "const" 定义为类的成员,强烈不鼓励使用 "define" 定义的全局常量. 作为PHP的官方框架,为什么会有这样的要求? 让我们一起分析一下吧. 1. define容易产生意想不到的错误 PHP常量是定义后就不能修改和再次赋值.但是如果再次赋值会怎么样? <?php define('C'

  • PHP 中常量的知识整理

    PHP中的常量分为自定义常量和系统常量 常量特点: 在设定以后,常量的值无法更改 常量名不需要开头的美元符号 ($) 作用域不影响对常量的访问 常量值只能是字符串或数字 获取常量的值: 使用常量名直接获取值: 使用 ==constant()== 函数,它和直接使用常量名输出的效果是一样的,但函数可以动态的输出不同的常量,在使用上要灵活.方便. defined() 函数:判断一个常量是否已经定义 define("PI",3.14); $is1 = defined('PI'); $is2

  • PHP 判断常量,变量和函数是否存在

    复制代码 代码如下: if (defined('CONST_NAME')) {    //do something } 变量检测则是使用isset,注意变量未声明或声明时赋值为NULL,isset均返回FALSE,如: 复制代码 代码如下: if (isset($var_name)) {    //do something} 函数检测用function_exists,注意待检测的函数名也需要使用引号,如: 复制代码 代码如下: if (function_exists('fun_name')) {

  • PHP中如何定义和使用常量

    1.自定义常量 * 必须用函数define()定义  * 定义完后其值不能再改变了  * 使用时直接用常量名,不能像变量一样在前面加$s 例如:define("PI",3.14);定义一个常量      $area = PI*R*R; 计算圆的面积      define("URL","http://www.jb51.net");      echo "我的网址是:".URL; 2 系统常量: FILE :php程序文件名 

  • PHP 的 __FILE__ 常量

    今天碰到了PHP的常量__FILE__的问题了. 在网上查了一下.总结了以下规律. dirname(__FILE___) 函数返回的是脚本所在在的路径. 比如文件 b.php 包含如下内容: <?php $basedir = dirname(__FILE__); ?> 如果b.php被其他目录里的a.php文件require 或者 include 去引用的话. 变量$basedir 的内容还是b.php所在的那个文件夹的路径. 而不是变成a.php文件所在的目录. dirname(__FILE

  • php中常量DIRECTORY_SEPARATOR用法深入分析

    本文实例讲述了php中常量DIRECTORY_SEPARATOR用法.分享给大家供大家参考.具体如下: DIRECTORY_SEPARATOR在php是什么意思呢,在什么时候使用DIRECTORY_SEPARATOR最合理呢?下面来给各位介绍一下php DIRECTORY_SEPARATOR常量. 我们知道DIRECTORY_SEPARATOR是一个PHP常量,代表反斜杠,因为windows系统和linux系统的反斜杠不一样.在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符,

  • mysql中limit的用法深入分析

    select * from table limit m,n其中m是指记录开始的index,从0开始,n是指从第m条开始,取n条. 复制代码 代码如下: mysql(root@localhost:test)>select * from total;+----+-----------------+--------+------------+| id | name            | number | mydate     |+----+-----------------+--------+--

  • 深入分析Mysql中limit的用法

    Mysql中limit的用法:在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table   LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.LIMIT 接受一个或两个数字参数.参数必须是一个整数常量.如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行

  • PHP常量DIRECTORY_SEPARATOR原理及用法解析

    DIRECTORY_SEPARATOR在php是什么意思呢,在什么时候使用DIRECTORY_SEPARATOR最合理呢?下面来给各位介绍一下php DIRECTORY_SEPARATOR常量. 我们知道DIRECTORY_SEPARATOR是一个PHP常量,代表反斜杠,因为windows系统和linux系统的反斜杠不一样.在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符,在linux上路径的分隔符是"/". 那么在PHP代码中什么时候要用DIRECTORY_SEP

  • SQL Server 中 RAISERROR 的用法详细介绍

    SQL Server 中 RAISERROR 的用法 raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sql server 2005的帮助 ] 其语法如下: RAISERROR ( { msg_id | msg_str | @local_variable } { ,severity ,state } [ ,argument [ ,...n ] ] ) [ WITH option [ ,...n ] ] 简要说明一下: 第一个参数:{ msg_id | ms

  • java中Calendar类用法实例详解

    本文实例讲述了java中Calendar类用法.分享给大家供大家参考,具体如下: java中的Calendar在开发中经常被忽略,这篇博客总结一下这个类,对后面项目中使用时期的时候有帮助. Calendar常量(field)的作用 Calendar cal = Calendar.getInstance(); cal.get(Calendar.DATE);//-----------------------当天 1-31 cal.get(Calendar.DAY_OF_MONTH);//------

  • java中enum的用法

    本文实例讲述了java中enum的用法.分享给大家供大家参考.具体分析如下: 1. 基本用法 复制代码 代码如下: enum Day {     SUNDAY, MONDAY, TUESDAY, WENDSDAY, THURSDAY, FRIDAY, SATURDAY; } 枚举是常量,所以应该用大写. 2. 枚举是对象 枚举隐含地继承了java.lang.Enum,所以它具有java.lang.Enum的属性和方法.遍历枚举: 复制代码 代码如下: public class Main {   

  • ASP.NET中TimeSpan的用法实例解析

    本文实例讲述了ASP.NET中TimeSpan的用法,分享给大家供大家参考.具体如下: ASP.NET 中,两个时间相减,得到一个 TimeSpan 实例,TimeSpan 有一些属性:Days.TotalDays.Hours.TotalHours.Minutes.TotalMinutes.Seconds.TotalSeconds.Ticks,注意没有 TotalTicks. 一.TimeSpan常量.字段 复制代码 代码如下: TimeSpan.MaxValue;            //

  • PHP中set_include_path()函数相关用法分析

    本文实例讲述了PHP中set_include_path()函数相关用法.分享给大家供大家参考,具体如下: 先看如下代码: <?php /** 定义根目录 */ define('__TYPECHO_ROOT_DIR__', dirname(__FILE__)); /** 定义插件目录(相对路径) */ define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins'); /** 设置包含路径 */ @set_include_path(get_include_path(

  • php 中的closure用法详解

    Closure,匿名函数,是php5.3的时候引入的,又称为Anonymous functions.字面意思也就是没有定义名字的函数.比如以下代码(文件名是do.php) <?php function A() { return 100; }; function B(Closure $callback) { return $callback(); } $a = B(A()); print_r($a);//输出:Fatal error: Uncaught TypeError: Argument 1

随机推荐