核心编程笔记 文件 目录 HTTP协议 数据采集(curl)

mac2024-01-23  35

文件操作

PHP也提供了一套文件操作系统函数。通过这套函数进行文件管理,创建文件、删除、改名、存储数据,读取数据。 文件的理解:在文件管理系统文件分为两种 其一就是文件,用于存储数据 其二是文件夹,用于存储文件的文件

1. 文件相关信息

函数说明备注file_exists(filename);用于判断一个文件是否存在filename是一个表示文件的完整名的一个字符串filemtime($filename);用于获取文件修改的时间获得时间戳,用date()转换为具体时间filesize($filename);用于获取文件的大小单位为字节basename(path);用于获取文件名realpath(path);用于判断path是否是真实存在的一个路径如果不是返回的是布尔false。如果是那么会将‘/’转换为‘\’,并将相对路径转换为绝对路径

2. 打开文件fopen()

fopen(filename,code);用于打开一个文件,用于之后的对文件内容的读写操作filename是一个表示文件的完整名的一个字符串mode表示打开的方式 mode取值打开文件方式说明r读文件不存在则报错r+读写文件不存在则报错w写文件不存在则创建文件,如果文件存在则清空文件w+读写文件不存在则创建文件,如果文件存在则清空文件a追加文件不存在则创建文件,如果文件存在并不会清空文件a+追加及读文件不存在则创建文件,如果文件存在并不会清空文件

如果以r、r+打开的文件,那么文件指针位于头部 如果以a、a+打开的文件,那么文件指针位于尾部

如果打开成功返回的是一个资源类型:

$filename="./data.txt"; $return=fopen($filename,'r'); var_dump($return);//返回:resource(3, stream)

3. 关闭文件

fclose(handle);     handle是fopen()函数返回的资源     用于判断handle所指向的文件

$filename="./data.txt"; $return=fopen($filename,'r'); fclose($return); var_dump($return);//返回resource(3, Unknown)

4. 写入文件fwrite()

fwrite(handle,data)-handlefopen()函数返回的资源data所要写的数据如果写入成功则返回写入字节数如果写入失败则返回0

file_put_contents(filename,data); 用于向文件中写入数据,特点是文件不需要打开,如果文件存在则清空文件内容

5. 读取文件内容

函数说明fgetc(handle);每次从handle所代表的文件中读取一个字符,文件的指针会下移一行fgets(handle,len);len表示读取的字节个数-1,默认是1024当遇到换行回车时就结束读取fread(handle,len);len表示读取的字节个数,不可以省略当遇到换行回车时,不受影响file(filename);将文件中的每一行读取的一个元素,并返还整个数组readfile(filename);filename用于表示文件的字符串将读取到的内容自动放到输出缓存(直接输出,不需要echo)file_get_contents(filename);一次性将所有文件读取出来

file()示例:

6. 拷贝文件

copy(source,dest);用于复制一个文件,复制文件时可以改名source源文件dest目录文件

7. 删除文件

unlink(filename);用于删除文件

8. 文件的判断

is_file(filename);主要用于区分文件还是文件夹(文件是否存在)

9. 文件指针(了解)

函数说明ftell(handle);用于获取文件的指针位置fseek(handle,n,【whence】);用于移动文件的指针位置注:-handle是fopen函数的返回值,代表实际的文件n偏移量whence移动的相对位置,取值:SEEK_SET 相对于文件头SEEK_END 相对于文件尾SEEK_CUR 相对于当前位置 /打开文件 $filename="./data.txt"; $handle=fopen($filename,'r'); //移动文件指针 $return=fseek($handle,-3,SEEK_END); echo fgetc($handle);

10. 文件锁(了解)

flock(handle,type);-type锁的类型 //打开文件 $filename="./data.txt"; $handle=fopen($filename,'r'); //锁文件 flock($handle,LOCK_EX); sleep(10);//10秒后解锁

目录操作

1. 创建目录

mkdir(path,mode,recursive);-part所要创建的文件夹mode权限,主要体现在Linuxrecursive取值为布尔值,表示要创建层级文件夹 //创建单个文件夹 $folder='Parent'; mkdir($folder); //创建多级文件夹 $folder='Parent/Childen/'; mkdir($folder,1,true);

2. 打开目录

opendir(folder);-folder表示文件夹目录的一个字符串如果打开成功返回一个资源类型

3. 关闭目录

closedir(handle);-handleopendir函数的返回值

4. 目录重命名

rename(source,dest);-source原文件夹dest新文件夹名

5. 删除目录

rmdir(folder);

6. 读取目录内容

readdir(handle); 用于读取文件夹的内容,只能读取当前层级内容,不能读取子文件夹中的内容 每次只读取一个条目,并将指针下移一行

7. 扫描目录

scandir(folder); 一次性将当前文件夹(不包含子文件夹)中所有内容读取到数组中,并返还这个数组

8.判断文件夹

is_dir(dir); dir就是一个表示文件夹的字符串 用于判断文件夹

9.遍历文件夹

//遍历制定文件夹中的所以内容 //1、设置一个函数,输出给定的文件夹中所有的内容 //2、如果是文件夹以红色显示,如果是文件以蓝色显示(区分文件夹与文件) //3.如果是子文件夹,再遍历出子文件夹左右内容 $dir='../demo'; function getTree($dir){ $arr=scandir($dir); foreach ($arr as $v){ $item=$dir.'/'.$v; //判断是否为文件夹 if(is_dir($item)) { //如果是文件夹,且不是.获..,继续遍历 if($v=='.'||$v=='..'){ continue; } echo '<font color="red">' . $item . '</font>', '<BR>'; getTree($item); }else{ //如果不是文件夹,直接输出 echo '<font color="blue">' . $item . '</font>', '<BR>'; } } } getTree($dir);

HTTP协议

1.概念

HyperText Transformation Protocol(超文本传输协议) HTTP互联网一个基石,就是客户端与web服务的通讯规则,规定了通讯双方通许时所采用的格式,以及格式的含义

2.HTTP协议的特点

支持c/s(客户端/服务器)结构简单,客户端向服务器端发起请求时,只需要传递所请求的文件即可灵活,服务器端向客户端响应数据,可通过content-type,来设置返回的数据类型无连接,服务器每次只处理一个请求,请求结束后断开与客户端的连接无状态,由于服务器与客户端具有无连接的特性,所以不了解客户端的本次请求,服务器并不知道本次请求与上次请求是否来源于同一个客户端,无法跟踪客户端的状态

3.HTTP协议的组成

两部分组成:

(1).由客户端发起的请求部分

(2).由服务器端对客户端的响应部分

4.HTTP请求

http的请求是由浏览器根据用户输入的URL,或点击某个页面上的按钮,而自动进行组织的

HTTP请求由三部分组成

(1). 请求头

说明代码请求方式GETURI(请求的文件名)/yzf/demo/file.html协议及版本号HTTP/1.1

(2). 报头

常见说明Host请求的主机名Connect保持连接User-Agent浏览器的相关信息,会自动携带给服务器Accept浏览器所能处理的数据的格式Accept-Encoding浏览器所支持的压缩格式Accept-Language浏览器所支持的语言If-Modified-Since用于询问当前所请求的内容,自从上次是否有修改过

(3). 空行

空行作用是用于分隔协议头与实际的数据

5.HTTP响应

HTTP协议的响应是由web服务器根据用户的请求,进行处理后,自动进行组织的

(1).响应行

--协议及版本号HTTP/1.1状态码200状态描述OK 常见的状态码描述200成功404请求文件不存在403没有权限

(2).响应的报头

-说明Date时间Server服务器的相关信息Last-Modified与客户端请求头中的Last-Modified-Since对应Content-Type此次响应的数据是什么格式,默认都是text/htmlAccept-Length所返回的数据的长度317Accept-Range返回的数据的单位

(3). 空行

空行作用是用于分隔协议头与响应的实际的数据

6.PHP操作和HTTP响应头

默认HTTP协议的响应头是由web服务器自动组织,PHP为我们提供了一个设置HTTP响应的协议头的函数header

(1).设置浏览器显示编码

header(‘Content-Type:text/html;charset=utf8’);

(2).用于进行跳转

header(‘location:url’);

(3).下载

//1.通过协议头告诉浏览器端,将要发送的数据,不能使用图片格式,而应该作为一个应用程序数据 header('Content-Type:application/octet-stream'); //2.通过协议头告诉浏览器,将要发送的数据,作为附件下载 header('Content-disposition:attachment;filename=ok..png'); $return=file_get_contents('3.png');

数据采集(了解)

1.什么是数据采集

我们创建网站是为了显示数据,但有一些数据的获取成本非常高。所谓的数据采集就是将别人网站的数据,为我们所用。

2.curl函数

Curl是一个代码版的浏览器。允许我们在代码中像使用浏览器一样访问别人的页面。默认PHP并没有开启对curl的支持,需要自己在配置文件中手动开启。 提示:如果开启后也无法使用,需要将php目录中的4个文件libeay32.dll、libss32.dll、ssleay32.dll、php5ts.dll文件复制到Apache的bin目录中 一般配置好wamp64都是默认开启的

3.curl函数的使用

(1).初始化curl(打开一个浏览器)

curl_init()

(2).设置参数(输入地址)

curl_setopt(curl,参数名,参数值);-curl就是curl_init的返回值参数名参数都是以常量的形式设计的CURLOPT_URL用于设置所请求的网址CURLOPT_RETURNTRANSFER取值若为1,表示不将收到的数据直接返回给浏览器,而是作为curl_exec()函数的返回值CURLOPT_POST取值为1CURLOPT_POSTFIELDS用于设置post请求所携带的数据

(3).执行curl(回车)

curl_exec(); 用于执行某个curl工具

//1.初始化curl(打开一个浏览器) $ci=curl_init(); //2.设置curl选项(输入地址) curl_setopt($ci,CURLOPT_URL,'http://www.baidu.com'); curl_setopt($ci,CURLOPT_RETURNTRANSFER,1); //3.执行curl(回车) $html= curl_exec($ci); file_put_contents('test.txt',$html);

4.模拟get请求

5.模拟post请求

//1.初始化curl(打开一个浏览器) $ci=curl_init(); //2.设置curl选项(输入地址) $url='http://localhost/yzf/news/php/insertNews.php'; curl_setopt($ci,CURLOPT_URL,$url); curl_setopt($ci,CURLOPT_RETURNTRANSFER,1); //设置post请求方式 curl_setopt($ci,CURLOPT_POST,1); //定义数据 $data=['n_name'=>'^_^','n_id'=>2,'n_sort'=>100,'n_dest'=>'测试','n_content'=>'unstopable']; curl_setopt($ci,CURLOPT_POSTFIELDS,$data); for($i=0;$i<3;$i++) { //3.执行curl(回车) curl_exec($ci);

最新回复(0)