PHP进阶之文件

2017-11-09

在之前提到的json中我们前端获取数据是从json数据中得来的,后台只是把我们所需要的数据打包放在数组里,我们要做的就是把这些数据拆分开来展示在页面上,所以,接下来我们就来看看后台是怎么整理这些数据的,而我们又是怎么来获取的,(这时候才明显体会到合作的重要性,呵呵🤗🤗🤗)

文件的建立、读取、写入、关闭

  • 文件的建立

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $fp=fopen("test.txt","a+");//这句话就是在本地打开一个文件test.txt.
    //如果这个文件不存在,则新建一个,这是第二个参数的作用,具体如下:
    //两大类:
    //一、文件指针指向文件头,r/r+,w/w+。
    //二、文件指针指向文件末尾,a/a+。
    // r/r+,前者只读方式打开,不能写,后者读写方式打开。更新的内容始终在文件的头部,如果一开始本地没有这个文件,不会自动创建。
    // w/w+,前者写入,后者读写。更新的内容每次都会覆盖前面的,如果本地没有文件,会自动创建一个。
    // a/a+,前者写入,后者读写。更新的内容会叠加,并且从后添加,如果没有文件会自动创建文件。(最常用的参数)
    // x/x+,略...
    // c/c+,略...
  • 文件的读取

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $string=fread($fp,1000);//第二个参数为读取的最大文件长度
    echo $string;//输出test.txt文件的内容
    //$string=fread($fp,1000);这句应该写在文件写入之前,因为文件读取是从光标即文件指针的位置开始读取的,所以要在写入之前,不然写完再读,光标在文件的最后,那就啥都读不到了。
    //想要写在文件写入之后可以用下面这个方法,改变光标的位置,让它从指定的位置开始读。
    fseek($fp,0);//第二个参数规定光标开始的位置,从零开始就是从头开始读取文件。给负数的话就读不到了。光标跑到了最后。
    while(!feof($fp)){//feof()测试指针是否到了文件结束的位置,来检测一行一行读取文件。
    //fgets逐行读取,这个读取如果写在写入的下面,也需要光标的配合。
    $string=fgets($fp);
    echo $string."<br>";
    }
  • 文件的写入

    1
    fwrite($fp,"sabfjsfcjasnfc");//第二个参数为写入的内容
  • 文件的关闭

    1
    fclose($fp);//关闭文件,释放资源

所以我们就可以对表单进行简单的数据处理了,在此之前,我们需要知道以下知识点:

  1. $_GET数组来获取前端使用get方式提交的数据。
  2. $_GET[‘txt’] 即为前端参数名为txt的变量,这个方法最方便。
  3. $_POST数组接受post数据,上传文件只能用post,更安全。
    所以在下面的form表单结构中用户提交数据后,让数据保存在test.txt文件中,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//php代码
if(!empty($_POST)){
$username=htmlspecialchars($_POST["username"]);
$content=htmlspecialchars($_POST["content"]);
//上面两句是为了防止用户输入标签类的语句,会被解析,所以在这之前先转义一下。
$fp=fopen("test.txt","a+");
$string=fread($fp,10000);
fwrite($fp,$username." ".$content."\n");
fclose($fp);
echo $string;
}
//html代码
<form method="post" action="">
留言人:<input type="text" name="username" />
留言内容:<input type="text" name="content">
<input type="submit" name="submit" value="提交">
</form>