php 使用fopen函数创建、打开文件详解及实例代码


Posted in PHP onSeptember 24, 2016

php中没有单独的文件创建函数,如果我们想创建函数,可以使用fopen(),fopen()函数字面意思是打开文件,但该函数也有创建文件的功能,当使用 fopen() 函数打开一个文件时,如果文件不存在,则会尝试创建该文件,并返回一个资源。

php fopen函数介绍

fopen函数打开文件或者 URL

语法:

resource fopen( string filename, string mode )

fopen()将 filename 指定的名字资源绑定到一个流上。

参数:

1. filename为尝试打开/创建的文件名。

如果 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。

如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了安全模式或者 open_basedir 则会应用进一步的限制。

如果 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。

2. mode 指定了打开模式,其可能的值如下:

打开模式 说明
r 只读,并将文件指针指向文件开始位置
r+ 读写,将文件指针指向文件开始位置
w 只写,将文件指针指向文件开始位置并将文件内容清空,如果文件不存在则尝试创建之
w+ 读写,将文件指针指向文件开始位置并将文件内容清空,如果文件不存在则尝试创建之
a 追加,将文件指针指向文件末尾来操作,如果文件不存在则尝试创建之
a+ 读写追加,将文件指针指向文件末尾来操作,如果文件不存在则尝试创建之
x 只写,并创建文件,如果文件已存在,则 fopen() 调用失败并返回 FALSE
x+ 读写,并创建文件,如果文件已存在,则 fopen() 调用失败并返回 FALSE

 

php fopen函数实例

1、使用fopen函数创建文件:

$my_file = 'file.txt';//如果文件不存在(默认为当前目录下)
$handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file); //implicitly creates file

2、使用fopen函数打开文件:

$my_file = 'file.txt';//假设文件file.txt存在
$handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file); //open file for writing ('w','r','a')...

3、fopen函数结合fread读取文件:

$my_file = 'file.txt';
$handle = fopen($my_file, 'r');
$data = fread($handle,filesize($my_file));

4、fopen函数结合fwrite函数写文件

$my_file = 'file.txt';
$handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file);
$data = 'This is the data';
fwrite($handle, $data);

5、fopen函数结合fwrite函数向文件中追加内容:

$my_file = 'file.txt';
$handle = fopen($my_file, 'a') or die('Cannot open file: '.$my_file);
$data = 'New data line 1';
fwrite($handle, $data);
$new_data = "\n".'New data line 2';
fwrite($handle, $new_data);

6、fopen() 函数还可用于打开互联网上的 URL 地址:

<?php
$fh = fopen("http://www.baidu.com/", "r");
if($fh){
  while(!feof($fh)) {
    echo fgets($fh);
  }
}
?>

注意:fopen() 返回的只是一个资源,要想显示打开的页面地址,还需要用 fgets() 函数读取并输出。

通过此文希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
用Socket发送电子邮件(利用需要验证的SMTP服务器)
Oct 09 PHP
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
我的论坛源代码(三)
Oct 09 PHP
php 正则 过滤html 的超链接
Jun 02 PHP
Zend的AutoLoad机制介绍
Sep 27 PHP
基于php 随机数的深入理解
Jun 05 PHP
基于PHP magic_quotes_gpc的使用方法详解
Jun 24 PHP
详解PHP错误日志的获取方法
Jul 20 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
Zend Framework教程之Autoloading用法详解
Mar 08 PHP
php+ajax实现异步上传文件或图片功能
Jul 18 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 PHP
php fread读取文件注意事项
Sep 24 #PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 #PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 #PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 #PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 #PHP
mysql alter table命令修改表结构实例详解
Sep 24 #PHP
Ajax和PHP正则表达式验证表单及验证码
Sep 24 #PHP
You might like
PHP的ASP防火墙
2006/10/09 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
javascript 显示当前系统时间代码
2009/12/28 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
从0搭建vue-cli4脚手架
2020/06/17 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
详解Vite的新体验
2021/02/22 Javascript
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
python实现批量改文件名称的方法
2015/05/25 Python
python 写入csv乱码问题解决方法
2016/10/23 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
python中pip的安装与使用教程
2018/08/10 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
数学国培研修感言
2014/02/13 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书