php文件目录操作函数学习笔记
文件操作函数
1、获取文件名:basename();
2、获取文件所在的目录:dirname();
3、pathinfo()获取文件信息,返回结果为一个array,包括路径、文件全名、文件名和扩展名。例如:
代码如下 | 复制代码 |
$file = '/com/netingcn/error.log'; |
4、判断文件是否存在:is_file();
5、判断目录是否存在:is_dir();
6、判断文件或目录是否存在:file_exists();
7、读取文件所有内容:file()或file_get_contents(),其中file()返回的是一个一行为元素的array,file_get_contents()把文件全部内容作为一个String返回;
8、写文件fwrite,如:
代码如下 | 复制代码 |
$handler = fopen($file, 'w'); // w 会冲掉以前的内容、a 是追加 |
下面简单介绍几个:
代码如下 | 复制代码 |
$handler = fopen($file, 'r'); while(!feof($handler)) { while(!feof($handler)) { while(!feof($handler)) { $content = fread($handler, $strLength); //读取指定长读的字符 fclose($handler); |
php读取文件操作函数
1.用fread()获取
请看下面php代码:
代码如下 | 复制代码 |
<?php $file = "phpddt.txt"; $fp = fopen($file,"r"); if ($fp){ while(!feof($fp)){ //第二个参数为读取的长度 $data = fread($fp, 1000); } fclose($fp); } echo $data; ?> |
运行结果:
php点点通(www.111cn.net),关注php开发,提供专业php教程!
2.fseek ( resource handle, int offset [, int whence] ),将指针偏移到偏移量offset处。
(php.txt内容是【Welcome to www.111cn.net】)
运行下面php代码后:
代码如下 | 复制代码 |
|
结果为:
to www.111cn.net
对whence参数说明如下:
SEEK_SET - 设定位置等于 offset 字节。
SEEK_CUR - 设定位置为当前位置加上 offset。
SEEK_END - 设定位置为文件尾加上 offset。(赋值)
如果没有指定 whence,默认为 SEEK_SET。
3.ftell()函数用于获取指针位置的偏移量
php演示代码如下:
代码如下 | 复制代码 |
|
运行结果:
8
4.rewind()函数将文件指针移至指定位置
5.parse_ini_file()函数,解析.ini文件,轻松解析多维数组。看下面php教程就了解了!
首先保存phpddt.ini文件,文件的内容如下:
[web1]
url= "www.111cn.net"
name = php点点通
[web2]
url= "www.baidu.com"
name = 百度搜索
编写如下php代码:
代码如下 | 复制代码 |
|
运行结果如下:
Array
(
[web1] => Array
(
[url] => www.111cn.net
[name] => php点点通
)
[web2] => Array
(
[url] => www.baidu.com
[name] => 百度搜索
)
)
目录操作
首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出:
代码如下 | 复制代码 |
<?php |
这是讲返回文件目录下面的文件已经目录的程序(0文件将返回false).
有时候需要知道目录的信息,可以使用dirname($path)和basename($path),分别返回路径的目录部分和文件名名称部分,可用disk_free_space($path)返回看空间空余空间.
创建命令:
代码如下 | 复制代码 |
mkdir($path,0777) |
,0777是权限码,在非window下可用umask()函数设置.
rmdir($path)
将删除路径在$path的文件.
dir -- directory 类也是操作文件目录的重要类,有3个方法,read,rewind,close,这是一个仿面向对象的类,它先使用的是打开文件句柄,然后用指针的方式读取的.,这里看php手册:
代码如下 | 复制代码 |
<?php |
输出:
Handle: Resource id #2
Path: /etc/php5
.
..
apache
cgi
cli
文件的属性也非常重要,文件属性包括创建时间,最后修改时间,所有者,文件组,类型,大小等.
下面我们重点谈文件操作.
三、文件操作
● 读文件
首先是一个文件看能不能读取(权限问题),或者存在不,我们可以用is_readable函数获取信息.:
代码如下 | 复制代码 |
<?php |
判断文件存在的函数还有file_exists(下面演示),但是这个显然无is_readable全面.,当一个文件存在的话可以用
代码如下 | 复制代码 |
<?php |
但是file_get_contents函数在较低版本上不支持,可以先创建文件的一个句柄,然后用指针读取全部:
$fso = fopen($cacheFile, 'r');
$data = fread($fso, filesize($cacheFile));
fclose($fso);
还有一种方式,可以读取二进制的文件:
$data = implode('', file($file));
● 写文件
和读取文件的方式一样,先看看是不是能写:
代码如下 | 复制代码 |
<?php $file = 'dirlist.php'; |
能写了的话可以使用file_put_contents函数写入:
代码如下 | 复制代码 |
<?php |
file_put_contents函数在php5中新引进的函数(不知道存在的话用function_exists函数先判断一下)低版本的php无法使用,可以使用如下方式:
$f = fopen($file, 'w');
fwrite($f, $data);
fclose($f);
替换之.
写文件的时候有时候需要锁定,然后写:
代码如下 | 复制代码 |
function cache_page($pageurl,$pagedata){ |
● 复制,删除文件
php删除文件非常easy,用unlink函数简单操作:
代码如下 | 复制代码 |
<?php |
即可.
复制文件也很容易:
代码如下 | 复制代码 |
<?php |
可以使用rename()函数重命名一个文件夹.其他操作都是这几个函数组合一下就能实现的.
● 获取文件属性
我说几个常见的函数:
获取最近修改时间:
代码如下 | 复制代码 |
<?php |
返回的说unix的时间戳,这在缓存技术常用.
相关的还有获取上次被访问的时间fileatime(),filectime()当文件的权限,所有者,所有组或其它 inode 中的元数据被更新时间,fileowner()函数返回文件所有者
$owner = posix_getpwuid(fileowner($file));
(非window系统),ileperms()获取文件的权限,
代码如下 | 复制代码 |
<?php |
filesize()返回文件大小的字节数:
代码如下 | 复制代码 |
<?php // 输出类似:somefile.txt: 1024 bytes $filename = 'somefile.txt'; ?> |
获取文件的全部信息有个返回数组的函数stat()函数:
代码如下 | 复制代码 |
<?php |
php中浮点数的精度值是用来控制输出该浮点数时使用的,可以理解为控制输出的位数,精度值不同,看到输出结果也可能不一样,注意:其内部还是按照实际值存储的,当两个浮点数进行四则运算时,用的还是其本来的值。
php的配置文件中使用precision来设定全局指定浮点数的精度值,似乎每个发行版,它的默认设置都不太一样,我在window下看到是12,在linux下看到此值是14,当然也可以通过程序中使用ini_set来改变全局设置,例如:
代码如下 | 复制代码 |
ini_set("precision", "15"); |
对于精度我一直理解为小数点后保留多少,那么在php的浮点数中是这样的么?答案是否定的。
浮点数其实是整数部分和小数部分组成,这里的精度是指整数部分的位数加小数部分的位数不能超过其精度最大值,如果超过,则按照四舍五入的方法截断到最大的精度值。整数部分如果是0,则不计位数,小数部分末尾0也不计入位数。另外对于同一个数,precision的不同,可能显示的出来表现形式也不一样。下面通过例子的方式来说明。
整数部分为 0 情况
代码如下 | 复制代码 |
$num = 0.12345600000000000; ini_set("precision", "12"); ini_set("precision", "3"); ini_set("precision", "5"); |
//超过精度值,保留5位这种情况下,精度值等价于小数点后保留几位。
整数部分大于 0 情况
代码如下 | 复制代码 |
$num = 12.12345600000000000; ini_set("precision", "12"); ini_set("precision", "3"); ini_set("precision", "5"); |
。
整数部分大于 0 情况 之二
代码如下 | 复制代码 |
$num = 12345678.12345600000000000; ini_set("precision", "12"); ini_set("precision", "3"); ini_set("precision", "5"); |
//超过精度值,且整数部分位数超过精度,小数部分舍弃,且整数部分只取5位上述例子中可以看到,精度值也关系到整数部分的截取。注意到最后两个例子中显示的方式不一样,一个是使用科学计数法,一个是后面用 0 补。通过实验得出的结论是当整数部分的位数 减去 精度值 大于 4 的时候,使用科学计数法的方式,否则后面用 0 补,换句话说,就是整数部分位数超过精度值后,截断后,补 0 的个数不会超过 4 。
浮点数运算
代码如下 | 复制代码 |
$num1 = 1331625729.687; echo $num1 . ' $sub = $num1 - $num2; echo $sub . ' |
上述例子就说明了精度值只是控制显示结果,内部存储还是原始值,所以 $sub 的值为1331625729.687减1331625730.934。
PHP内置的echo, var_dump, json_encode, 字符串拼接等函数(指令)在显示浮点数时都有问题, 导致精度丢失.
代码如下 | 复制代码 |
<?php $a = 1315537636.338467; printf("%f", $a); echo "n"; echo $a . "n"; echo $a; echo "n"; ?> 结果 1315537636.338467 1315537636.3385 1315537636.3385 |
也就是说, 用PHP最顺手的方法将浮点数转成字符串或者显示是不行的, 必须使用printf/sprintf将浮点数转成字符串.
今天我以一个简单的利用date()函数输出中文年月日时分秒引出关于大多数据用户在使用php date()函数的一些问题与date()函数一些参数详解。当然了,PHP的DATE函数是不可能直接输出中文的年月日的,但可以用下面这种方法自己写一个函数。
代码如下 | 复制代码 |
function today(){ |
如果出现echo date("Y-m-d");
警号:
Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for '8.0/no DST' instead in G:sourcetestceshimktime.php on line 4
网上查了下资料才知道原因,下面给大家分享下:
在用PHP5.3以上的PHP版本时,只要是涉及时间的会报一个
"PHP Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for '8.0/no DST' instead in
以下是三种方法(任选一种都行):
一、在页头使用date_default_timezone_set()设置 date_default_timezone_set('PRC'); //东八时区 echo date('Y-m-d H:i:s');
二、在页头使用 ini_set('date.timezone','Asia/Shanghai');
三、修改php.ini。打开php5.ini查找date.timezone 去掉前面的分号修改成为:date.timezone =PRC
重启http服务(如apache2或iis等)即可。
关于date函数参数
d 月份中的第几天,有前导零的 2 位数字 01 到 31
D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun
j 月份中的第几天,没有前导零 1 到 31
l (“L”的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday
N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(星期一)到 7(星期天)
S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用
w 星期中的第几天,数字表示 0(星期天)到 6(星期六)
z 年份中的第几天 0 到 366
W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 42(当年的第 42 周)
F 月份,完整的文本格式,例如 January 或者 March January 到 December
m 数字表示的月份,有前导零 01 到 12
M 三个字母缩写表示的月份 Jan 到 Dec
n 数字表示的月份,没有前导零 1 到 12
t 给定月份所应有的天数 28 到 31
L 是否为闰年 如果是闰年为 1,否则为 0
o ISO-8601 格式年份数字。
Y 4 位数字完整表示的年份 例如:1999 或 2003
y 2 位数字表示的年份 例如:99 或 03
a 小写的上午和下午值 am 或 pm
A 大写的上午和下午值 AM 或 PM
B Swatch Internet 标准时 000 到 999
g 小时,12 小时格式,没有前导零 1 到 12
G 小时,24 小时格式,没有前导零 0 到 23
h 小时,12 小时格式,有前导零 01 到 12
H 小时,24 小时格式,有前导零 00 到 23
i 有前导零的分钟数 00 到 59>
s 秒数,有前导零 00 到 59>
e 时区标识(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores
I 是否为夏令时 如果是夏令时为 1,否则为 0
O 与格林威治时间相差的小时数 例如:+0200
P 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔 例如:+02:00
T 本机所在的时区
Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边是正的。 -43200 到 43200
c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00
r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200
U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 time()获得时间戳
php的date()函数十分强大,通过上面这些参数可以实现很多日期的操作,比如说获取上面我标记的红色参数说明来实现今天是星期几操作!
本文章来给各位同学介绍关于php memcache和memcached的区别,希望些方法对各位同学会有所帮助哦。首先要肯定的是,必须开启memcached服务,才能用memcache和memcached的php api。
那么这两个针对memcached服务的api之间有什么区别呢?
1.memcache是PHP自己的扩展,而memcached是基于libmemcached的扩展。
2.memcache只提供一些基本功能,比如set、get、replace、delete、flush 等等,
memcached提供的功能更丰富,有setOption(setOptions)、cas、getMulti(setMulti)、getMultiByKey(setMultiByKey)、addServers(带s,一次性可连接多个节点)。
3.听说memcached的性能比memcache更高,因为支持binary protocol。
4.memcache支持持久化连接,而memcached不支持。
在php中有专业的excel处理类我们可以用它来增加,删除或处理excel中相关数据,如果我们只是要生成excel就可以使用下面方法简单又快捷。
如果不读数据我们直接使用下面代码就可以了,只需要把相关的数据导出到excel表就可以了,这么简单的操作就不需要用那些类库什么的了。直接用header的方式就可以了:header("Content-type:application/vnd.ms-excel");
代码如下 | 复制代码 |
<?php ?> |
简单纯粹的php导出excel表格方法,木有过多的解释,花哨的装饰,一看就懂
代码如下 | 复制代码 |
|
如果程序是utf-8编码的,还需要用iconv函数去转码,不然是会乱码的,乱码的。
另word格式导入类似,,指定header就可以了:
代码如下 | 复制代码 |
header("Content-Type: application/msword"); |
相关文章
- 下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
- eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08Jupyter Notebook读取csv文件出现的问题及解决
这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
- 下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
- C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
- 这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
- 这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
php无刷新利用iframe实现页面无刷新上传文件(1/2)
利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25- CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
- 又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
- 这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
- strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04