php如何修改php文件内容

作者:神秘网友 发布时间:2020-10-19 10:00:52

php如何修改php文件内容

php修改文件内容的方法:首先通过file_put_contents函数写入文件;然后使fwrite配合fopen进行写入并修改的操作;最后通过file_exists等函数检测文件属性即可。

php如何修改php文件内容

推荐:《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文件内容相关教程

  1. windows如何删除php

    windows删除php的方法:首先打开windows电脑;然后找到PHP文件夹并选择删除;接着以管理员的身份运行CMD实现MySQL的卸载;最后停止Apache服务并重启电脑即可。 推荐:《PHP视频教程》 windows+PHP+MySQL+Apache自定义环境卸载 1.PHP的卸载 直接删除PHP的文件

  2. php如何实现简单购物车

    php实现简单购物车的方法:首先用session记录一个二维数组;然后把session存入array;最后对array进行增加、删除、修改操作即可。 推荐:《PHP视频教程》 本文介绍一个php实现的购物车代码,功能实现完整,具有一定的参考价值 这里我们为你提供个简单的php购

  3. linux下怎么修改php配置文件路径

    linux下修改php配置文件路径的方法:首先执行【php --ini】命令打印phpinfo();然后查看php配置文件路径;最后执行【vim /usr/local/php7/lib/php.ini】命令修改配置文件路径即可。 修改PHP配置文件 (推荐教程:linux视频教程) vim /usr/local/php7/lib/ph

  4. php如何实现快速排序

    php实现快速排序的方法:首先创建一个PHP示例文件;然后创建交换函数和主函数;接着对低子表和高子表进行递归排序;最后调用QuickSort算法即可。 推荐:《PHP视频教程》 基本思想: 快速排序(Quicksort)是对冒泡排序的一种改进。他的基本思想是:通过一趟

  5. php xls如何转csv

    php xls转csv的方法:首先创建一个PHP示例文件;然后导入“PHPExcel.php”;接着把所有xls文件列出列表,勾选提交到“$_POST”;最后通过getCsv方法将xls转为csv即可。 推荐:《PHP视频教程》 PHPExcle把xls文件转为csv文件 在把excle导入数据库的时候,可能

  6. php如何实现图片延时加载

    php实现图片延时加载的方法:在到达指定加载图片位置时,用data-src属性值替换img的src属性值即可,如【imgs[i].src = imgs[i].getAttribute(data-src);】。 在到达指定加载图片位置时,用data-src的属性值替换img的src的属性值即可,这个时候img就会去请求

  7. 用 Python 修改微信(支付宝)运动步数,轻松 TOP1

    用 Python 修改微信(支付宝)运动步数,轻松 TOP1 作者:Tsubasa_Ou https://blog.csdn.net/jiangfan2017/article/details/108984940 大家好,我是一行 今天分享的文章让你霸屏微信运动,横扫支付宝榜单 1 项目意义 如果你想在支付宝蚂蚁森林收集很多能量种

  8. 如何解决多重继承

    如何解决多重继承 例1 #includeiostream using namespace std;class A{public:void f();};class B{public:void f();void g();};class C : public A,public B{public:void g();void h();};int main(){C c1;c1.f();//具有二义性c1.g();//无二义性(同名覆盖)re