php如何修改php文件内容-PHP问题

资源魔 54 0

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文件内容的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 php故障解决 php使用问题

抱歉,评论功能暂时关闭!