1. 文件系统
1. 读取文件
$content = file_get_contents('./test.txt');//读取文件的全部内容
PHP也提供类似于C语言操作文件的方法,使用fopen,fgets,
fread等方法,fgets可以从文件指针中读取一行,freads可以读
取指定长度的字符串
例如:
$fp = fopen('./text.txt', 'rb');
while(!feof($fp)) {
echo fgets($fp); //读取一行,可使用fread($fp, 4096);每次读4096个字符
}
fclose($fp);
2. 判断文件是否存在
如果只是判断文件存在,使用file_exists就行,file_exists不仅可以判断文件是否存在,同时也可以判断目录是否存在,从函数名可以看出,is_file是确切的判断给定的路径是否是一个文件
更加精确的可以使用is_readable与is_writeable在文件是否存在的基础上,判断文件是否可读与可写
3. 写入文件
1.最简单的方式是采用file_put_contents。
$filename = './test.txt';
$data = 'test';
file_put_contents($filename, $data);
2.同样的,PHP也支持类似C语言风格的操作方式,采用fwrite进行文件写入。
$fp = fopen('./test.txt', 'w');
fwrite($fp, 'hello');
fwrite($fp, 'world');
fclose($fp);
4. 取得文件的修改时间
fileowner(file):获得文件的所有者
filectime(file):获取文件的创建时间
filemtime(file):获取文件的修改时间
fileatime(file):获取文件的访问时间
5. 取得文件的大小
1. $size = filesize($filename);
2. 如果要转换文件大小的单位,可以自己定义函数来实现。
function getsize($size, $format = 'kb') {
$p = 0;
if ($format == 'kb') {
$p = 1;
} elseif ($format == 'mb') {
$p = 2;
} elseif ($format == 'gb') {
$p = 3;
}
$size /= pow(1024, $p);
return number_format($size, 3); //格式化分组显示函数
}
$filename = '/data/webroot/usercode/code/resource/test.txt';
$size = filesize($filename);
$size = getsize($size, 'kb'); //进行单位转换
echo $size.'kb';
注:如果查看目录的大小,只能递归查找
6. 删除文件
unlink($filename);//删除文件
rmdir($dir);//删除文件夹,必须为空,如果不为空,没有权限
如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件。
foreach (glob("*") as $filename) {
unlink($filename);
}
2. 时间和日期
1. 取得时间的时间戳
$time = time();
echo $time;//1396193923,这个数字表示从1970年1月1日 00:00:00 到我输出这个脚本时经历了1396193923秒
2. 取得日期
//date函数,第二个参数取默认值的情况
echo date("Y-m-d");//2014-03-30
//date函数,第二个参数有值的情况
echo date("Y-m-d",'1396193923');//2014-03-30,1396193923表示2014-03-30的unix时间戳
3. 取得日期的Unix时间戳
echo strtotime('2014-04-29');//1398700800,这个数字表示从1970年1月1日 00:00:00 到2014年4月29号经历了1398700800秒
echo strtotime('2014-04-29 00:00:01');//1398700801,这个数字表示从1970年1月1日 00:00:00 到2014-04-29 00:00:01时经历了1398700801秒
大家发现上面的规律了吗,其实strtotime('2014-04-29')相当于strtotime('2014-04-29 00:00:00')
4. 将格式化的日期字符串转换为Unix时间戳
echo strtotime("now");//相当于将英文单词now直接等于现在的日期和时间,并把这个日期时间转化为unix时间戳。这个效果跟echo time();一样。
echo strtotime("+1 seconds");//相当于将现在的日期和时间加上了1秒,并把这个日期时间转化为unix时间戳。这个效果跟echo time()+1;一样。
echo strtotime("+1 day");//相当于将现在的日期和时间加上了1天。
echo strtotime("+1 week");//相当于将现在的日期和时间加上了1周。
echo strtotime("+1 week 3 days 7 hours 5 seconds");//相当于将现在的日期和时间加上了1周3天7小时5秒。
5. GMT时间
echo gmdate('Y-m-d H:i:s', time()); //输出为:2014-05-01 07:15:22 因为格林威治时间是现在中国时区的时间减去8个小时,所以相对于现在时间要少8个小时