php修正文件内容的办法:起首经过file_put_contents函数写入文件;而后使fwrite合营fopen进行写入并修正的操作;最初经过file_exists等函数检测文件属性便可。
保举:《PHP视频教程》
file_put_contents写入文件
咱们先来学习第一种写入文件的形式:
int file_put_contents ( string $文件门路, string $写入数据])
性能:向指定的文件傍边写入一个字符串(会清空原本的内容),假如文件没有存正在则创立文件。前往的是写入的字节长度
<?php $data = "正在PHP中文网学好PHP,妹子票子再也不话下!"; $numbytes = file_put_contents('binggege.txt', $data); //假如文件没有存正在创立文件,并写入内容 if($numbytes){ echo '写入胜利,咱们读取看看后果尝尝:'; echo file_get_contents('binggege.txt'); }else{ echo '写入失败或许不权限,留意反省'; } ?>
fwrite合营fopen进行写入操作
int fwrite ( resource $文件资本变量, string $写入的字符串 [, int 长度])
<?php $filename = 'test.txt'; $fp= fopen($filename, "w"); //w是写入模式,文件没有存正在则创立文件写入。 $len = fwrite($fp, '我是一只来自南方的狼,却正在北方冻成为了狗'); fclose($fp); print $len .'字节被写入了\n'; ?>
总结:
1.不管有无新定都会关上文件从新写入
2.原本的文件内容会被笼罩掉
3.文件没有存正在会创立
那咱们来比照一下如下几个模式的没有同:
模式 | 阐明 |
---|---|
r | 只能读不克不及应用fwrite写 |
r+ | 可操作读、写 |
w | 只能够写性能 |
w+ | 便可读又能够写 |
a模式以及w模式的没有同
一样是上面的这段代码,咱们改成a模式。
<?php $filename = 'test.txt'; $fp= fopen($filename, "a"); $len = fwrite($fp,'读年夜学渺茫了,PHP中文网学PHP给你心愿'); echo $len .'字节被写入了\n'; ?>
关上网页执行这段代码,你会发现:每一刷新一次,文件中就会多一段
:读年夜学渺茫了,PHP中文网学PHP给你心愿。
总结:
模式 | 总结 |
---|---|
x | 每一次写入会干掉原有文件的内容,文件没有存正在城市创立 |
a | 每一次写入城市向文件的尾端追加内容 |
x模式以及w模式的没有同
这段代码咱们再试验一次,改成x模式:
<?php $filename = 'test.txt'; $fp= fopen($filename, "x"); $len = fwrite($fp,'读年夜学渺茫了,PHP中文网学PHP给你心愿'); echo $len .'字节被写入了\n'; ?>
咱们会发现:
1.文件存正在的时分会报错 2.假如把$filename 改为其余的文件名,就能够了。然而,再次刷新的时分又报错了 3.x+ 是加强的x模式。读取时也能够应用。
php 创立暂时文件
咱们来学习一下这个函数:
resource tmpfile ( )
性能:创立一个暂时文件,前往资本类型。封闭文件即被删除了。
php挪动、拷贝以及删除了文件
重定名文件
bool rename($旧名,$新名);
这个函数前往一个bool值,将旧的名字改成新的名字。
<?php //旧文件名 $filename = 'test.txt'; //新文件名 $filename2 = 'reName.txt.'; //修正称号 rename($filename, $filename2); ?>
复制文件
复制文件,就相称于是克隆技巧,将一个原来的货色再克隆成一个新的货色。两个长患上如出一辙。
bool copy(源文件,指标文件)
性能:将指定门路的源文件,复制一份到指标文件的地位。
<?php //旧文件名 $filename = 'copy.txt'; //新文件名 $filename2 = 'copy2.txt'; //修正名字。 copy($filename, $filename2); ?>
注:
1·复制的文件名不克不及以及源文件同名,不然无奈复制;
2.复制文件名假如曾经存正在的话,会把源文件的内容copy一份交换复制文件的内容。
删除了文件
删除了文件就是将指定门路的一个文件删除了,不外这个删除了是间接删除了。应用的是windows电脑,你正在收受接管站看没有到这个文件。
你只会发现,这个文件隐没了。
bool unlink(指定门路的文件)
<?php $filename = 'test.txt'; if (unlink($filename)) { echo "删除了文件胜利 $filename!\n"; } else { echo "删除了 $filename 失败!\n"; } ?>
php检测文件属性函数
bool file_exists ( $指定文件名或许文件门路) 性能:文件能否存正在。 bool is_readable ( $指定文件名或许文件门路) 性能:文件能否可读 bool is_writeable ( $指定文件名或许文件门路) 性能:文件能否可写 bool is_executable ( $指定文件名或许文件门路) 性能:文件能否可执行 bool is_file ( $指定文件名或许文件门路) 性能:能否是文件 bool is_dir ( $指定文件名或许文件门路) 性能:能否是目次 void clearstatcache ( void ) 性能:分明文件的状态缓存
咱们来说第一个例子,文件锁。假如曾经装置了,存正在装置锁就提醒已装置,不然就持续装置。
咱们假定装置界面的网址是:install.php,装置的锁文件是install.lock。咱们就能够检测install.lock文件能否存正在。
<?php if(file_exists('install.lock')){ echo '已装置,请没有要再次进行装置'; exit; } ?>
php 文件罕用函数以及常量
平台 | 宰割符 |
---|---|
windows | \ |
类unix | / |
咱们会应用到一个常量:
DIRECTORY_SEPARATOR //代表反斜杠
因为FILE是PHP的预约义常量,以是没方法扭转,假如需求让FILE也自顺应操作零碎。
那末就是没有要用FILE,能够用自界说的常量,而且把FILE解决一下,以下:
<?php //猎取文件路劲,而后用DIRECTORY_SEPARATOR交换路劲中的'/'、'\\'; $_current_file = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, __FILE__); //从新字界说常量,输入格局化后的文件路劲 define('__CUR_FILE__', $_current_file); echo __CUR_FILE__; // D:\myphp\test\inidex.php ?>
文件指针操作函数
rewind ( resource handle) 性能:指针回到开端处 fseek ( resource handle, int offset [, int from_where]) 性能:文件指针向后挪动指定字符
<?php > demo2.txt > aaaaa > bbbbb > 11111 > 22222 $fp = fopen('demo2.txt', 'r+'); //读取10个字符, //读取前十个字节(空格算一个,换行算两个字节) echo fread($fp,10); //指针设置回到开端处 rewind($fp); // aaaaa bbb //再读取10次看看输入的是甚么 echo '<br>'; echo fread($fp,10); // aaaaa bbb echo '<br>'; //文件指针向后挪动10个字符,(以后指针正在最开端的地位) echo fseek($fp,10); // fseek的前往值为0 echo '<br>'; //再看看文件中输入的是甚么 echo fread($fp,10); // bb 11111 echo '<br>'; fclose($fp); ?>
filesize 检测文件的巨细
<?php $filename = 'demo.txt'; echo $filename . '文件巨细为: ' . filesize($filename) . ' bytes'; ?>
其它操作文件的函数
其实另有一些其余操作文件的函数,读取文件
函数名 | 性能 |
---|---|
file | 把整个文件读入一个数组中 |
fgets | 从文件指针中读取一行,读到最初前往false |
fgetc | 从文件指针中读取一个字符,读到最初前往false |
ftruncate | 将文件截断到给定的长度 |
fgetc
//以添加的r模式关上 $fp = fopen('demo2.txt','r+'); //你会发现每一次只读一个字符 echo fgetc($fp) .'<br />'; //只读取一个字符 //我要全副读取能够,读取一次将后果赋值一次给$string while($string = fgetc($fp)){ echo $string; //读取没有到前往false }
fgets
//以添加的r模式关上 $fp = fopen('demo.txt','r+'); //你会发现每一次读取一次关上一行 echo fgets($fp); echo fgets($fp); echo fgets($fp); echo fgets($fp); //读取没有到前往false
ftruncate前往值为1 int
ftruncate($file , len);截取的长度年夜于文件内容长度,会用空字符填补
//关上咱们下面的demo.txt文件 $file = fopen("demo.txt", "a+"); //你能够数数20个字有多长,看看是否是达到成果了 echo ftruncate($file,20); fclose($file);
文件的工夫函数
函数 | 性能阐明 |
---|---|
filectime | 文件创立工夫 |
filemtime | 文件修正工夫 |
fileatime | 文件前次拜访工夫 |
<?php $filename = 'demo.txt'; if (file_exists($filename)) { echo '$filename文件的前次拜访工夫是:' . date("Y-m-d H:i:s", fileatime($filename)); echo '$filename文件的创立工夫是: ' . date("Y-m-d H:i:s", filectime($filename)); echo '$filename文件的修正工夫是: ' . date("Y-m-d H:i:s", filemtime($filename));} ?>
php 文件锁处机制
文件锁的用处:
若一集体正在写入一个文件,另一集体同时也打个了这个文件进行写入文件。
这状况下,假如遇到肯定的碰撞几率的话,没有晓得到底谁的操作为准。
因而,这个时分咱们引入锁机制。
若用户A正在写入或许读取这个文件的时分,将文件加之同享所。我能够读,其余人也能够读。
然而,我假如这与的时分。我应用独有锁。这个文件归我了,你们都别动,除了非我将文件锁进行开释。
留意:加之了文件锁后要留意开释。
php 文件锁处机制
文件锁机制普通正在繁多关上文件的时分基本看没有到成果。这一块的学习有一点点形象。
各人没有要去考虑怎样完成的呀?
为何看没有到成果呀?
答:由于电脑的操作太快了,根本上是毫秒级的。以是这个试验实际上是看没有到成果的。
这一章理解文件锁的根本概念便可,相熟文件锁函数以及锁机制。
文件锁的用处:
若一集体正在写入一个文件,另一集体同时也打个了这个文件进行写入文件。
这状况下,假如遇到肯定的碰撞几率的话,没有晓得到底谁的操作为准。
因而,这个时分咱们引入锁机制。
若用户A正在写入或许读取这个文件的时分,将文件加之同享所。我能够读,其余人也能够读。
然而,我假如这与的时分。我应用独有锁。这个文件归我了,你们都别动,除了非我将文件锁进行开释。
留意:不管加之了文件锁后要留意开释。
咱们来看看这个函数:
bool flock ( resource $handleFile , int $operation)
咱们来看看锁类型:
锁类型 | 阐明 |
---|---|
LOCK_SH | 获得同享锁定(读取的顺序) |
LOCK_EX | 获得独有锁定(写入的顺序) |
LOCK_UN | 开释锁定(无论同享或独有) |
咱们接上去把demo2.txt加之一个独有锁,进行写入操作。
$fp = fopen("demo2.txt", "r+"); // 进行排它型锁定 if (flock($fp, LOCK_EX)) { echo '1'; fwrite($fp, "文件这个时分被我独有了哟\n"); // 开释锁定 flock($fp, LOCK_UN); } else { echo "锁失败,可能有人正在操作,这个时分不克不及将文件上锁"; } fclose($fp);
阐明:
1.上例中我为了写入文件,把文件加之了独有锁。
2.假如我操作实现,写入实现后,解除了掉了独有锁。
3.假如是正在读取文件的时分,各人可加依照一样的解决思绪加之同享锁。
以上就是php若何修正php文件内容的具体内容,更多请存眷资源魔其它相干文章!
抱歉,评论功能暂时关闭!