<转载>php 换行 PHP_EOL变量 、php的路径分隔符 DIRECTORY_SEPARATOR变量

php 换行 PHP_EOL变量 、php的路径分隔符 DIRECTORY_SEPARATOR变量

1、php 换行 PHP_EOL变量

以下内容转载自  http://blog.csdn.net/robertaqi/article/details/5952573

一个小小的换行,其实在不同的平台有着不同的实现,为什么要这样,可以是世界是多样的。

本来在unix世界换行就用/n来代替,但是windows为了体现他的不同,就用/r/n,更有意思的是在mac中用/r

因此unix系列用 /n

windows系列用 /r/n

mac用 /r

这样就用你写的程序在不同的平台上运行有着不少的麻烦

比如有的程序要把文件中的所有行都合成一行,这有不同的实现方式,

第一种方式

str_replace(array("/r","/n","/r/n"),"",$string);

第二种方式就用正则表达示$str = preg_replace('//s*/','', $str);

第三种方式

这里不得不重新看一下php那些已经定义好的变量

PHP_EOL就是其中的一个,代表php的换行符,这个变量会根据平台而变,在windows下会是/r/n,在linux下是/n,在mac下是/r

$str = str_replace(PHP_EOL, '', $str);

2、php的路径分隔符 DIRECTORY_SEPARATOR变量

以下内容转载自 http://www.phpweblog.net/fuyongjie/archive/2008/10/20/5963.html

众所周知,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

posted @ 2012-07-18 14:57  keygle  阅读(1046)  评论(0)    收藏  举报