<转载>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吧

浙公网安备 33010602011771号