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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
PHP连接SQLServer2005 的问题解决方法
Jul 19 PHP
IIS7.X配置PHP运行环境小结
Jun 09 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
Aug 06 PHP
深入PHP异步执行的详解
Jun 03 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
thinkphp3.2.2实现生成多张缩略图的方法
Dec 19 PHP
学习php设计模式 php实现适配器模式
Dec 07 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
Jun 09 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 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环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
老生常谈javascript中逻辑运算符&amp;&amp;和||的返回值问题
2017/04/13 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
Pyramid添加Middleware的方法实例
2013/11/27 Python
python sys模块sys.path使用方法示例
2013/12/04 Python
python多线程扫描端口示例
2014/01/16 Python
对Django外键关系的描述
2019/07/26 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
python 串行执行和并行执行实例
2020/04/30 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
如何通过python计算圆周率PI
2020/11/11 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
电子信息毕业生自荐信
2013/11/16 职场文书
十岁生日父母答谢词
2014/01/18 职场文书
个人自我剖析材料
2014/02/07 职场文书
好学生评语大全
2014/05/05 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
公民授权委托书
2014/10/15 职场文书
大明湖导游词
2015/02/03 职场文书
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技
nginx rewrite功能使用场景分析
2022/05/30 Servers