一:读写文本文件

一列用于读写文本文件内容的系统函数

写入文件步骤:

1,打开文件
2,向文件中写入内容
3,关闭文件
例如:

  1. <?php
  2. header("content-type:text/html;charset=utf-8");
  3. $handle = fopen("doc.txt","w");
  4. //设置变量=打开文件函数("打开文件名",”访问权限“)
  5. fputs($handle, "你好中国");
  6. //写入文件内容(要写入的文件,"写入的内容")
  7. fclose($handle);
  8. //关闭文件

常用函数:

函数名 说明
fopen() 打开文件
fclose() 关闭文件
fgets() 读取一行字符
fgetss() 读取一行字符,并过滤掉HTML和PHP标记
fgetc() 读取一个字符
fputs() 写入文件内容
fwrite() 写入文件内容
file_get_contents() 将整个文件读入一个字符串
file_put_contents() 将一个字符串写入文件
feof() 文件判断结束
fread() 读取指定文件大写
filesize 获取文件大小

文件关闭fclose()

fclose(resource $handle): bool
fcolse($file);//关闭例句

关闭一个已打开的文件指针,成功返回true,失败是返回false。
在文件操作中,关闭文件操作虽然看不到明显的效果,但是一定要关闭,否则可能会产生内存泄漏。

1、读取一个字符fgect()

从文件句柄里获取一个字符,也就是读取完一个字节。
返回一个包含由一个字节的字符串,该字节从handle指向文件。碰到了EOF返回false。

fgetc(resource $handle): string
     $file = fopen("test.txt", "w+");
     // 如果是英文,一次读取一个字符
     // 如果是中文 ,UTF8 编码,需要读取三次才能拼接成一个汉字, GBK 需要读取两次
     // 注意,中文时,每次都要读取完马上输出,可以拼接成汉字后,即会显示
     $content = fgetc($file);  //get_file_character
     echo $content;

     $content = fgetc($file);
     echo $content;

     $content = fgetc($file);
     echo $content;

读取文件内所有内容:

<?php
   $file = fopen("test.txt", "r");
   do{
      $content = fgetc($file);
      echo $content;
   // 判断读取的内容是不是空字符串,如果是空串,表示已经读取到文件最后  
    // }while($content != "");
    }while($content);
    fclose($file);
?>

2、文件结束判断 feof()

feof(resource $handle): bool

feof — 测试文件指针是否到了文件结束的位置
如果文件指针到了 EOF 或者出错时则返回 true,否则返回一个错误(包括 socket 超时),其它情况则返回 false

<?php
   $file = fopen("test.txt", "r");
   do{
      $content = fgetc($file);
      echo $content;
   // 判断 文件 是否结束,如果结束就跳出循环,否则继续读取
   }while(!feof($file));
     fclose($file);
?>

3、读取一行内容 fgets()

fgets(resource $handle, int $length = ?): string

fgets — 从文件指针中读取一行。
从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。
碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。
如果没有指定 length,则默认为 1K,或者说 1024 字节。

<?php
   $file = fopen("test.txt", "r");
   do{
      // 一次读取一行,默认是 1024字节
      $content = fgets($file);
      // 指定读取 字节数
      // $content = fgets($file,5);
      echo $content . "<br>";
   }while(!feof($file));
   fclose($file);
?>

4、读取一行内容,并过滤 HTML 标记 fgetss()

fgetss(resource $handle, int $length = ?, string $allowable_tags = ?): string

fgetss — 从文件指针中读取一行并过滤掉 HTML 标记
allowable_tags可以用可选的第三个参数指定哪些标记不被去掉。

<?php
   $file = fopen("https://www.baidu.com", "r");
   do{
      // 一次读取一行,默认是 1024字节
      $content = fgetss($file);
      echo $content . "<br>";
   }while(!feof($file));
   fclose($file);
?>

5、读取指定大小内容 fread()

fread(resource $handle, int $length): string

fread — 读取文件(可安全用于二进制文件)
fread() 从文件指针 handle 读取最多 length 个字节。 该函数在遇上以下几种情况时停止读取文件:

  • 读取了 length 个字节
  • 到达了文件末尾(EOF)

    6、 获取文件大小 filesize()

filesize(string $filename): int

filesize — 取得文件大小,返回文件大小的字节数

注意一: 参数是测试文件的路径
注意二: 因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型,对 2GB 以上的文件,一些文件系统函数可能返回无法预期的结果。

<?php
   // test.txt: 1024 bytes
   $filename = 'test.txt';
   echo $filename . ': ' . filesize($filename) . ' bytes';
?>
<?php
   $file = fopen("test.txt", "r");
   // 获取文件大小,一次性读取出来
   $content = fread($file, filesize("test.txt"));
   echo $content;
   fclose($file);
?>

7、 将整个文件读取出为一个字符串 file_get_contents()

file_get_contents(
    string $filename,
    bool $use_include_path = false,
    resource $context = ?,
    int $offset = 0,
    int $length = ?
): string|false

file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。
如果操作系统支持还会使用内存映射技术来增强性能。

<?php
   $content = file_get_contents("test.txt");
   echo $content;
?>

8、 将整个文件读取出并保存为一个数组 file()

file(string $filename, int $flags = 0, resource $context = ?): array

返回数组形式的文件内容。数组的每个元素对应于文件中的一行(结尾会附加换行符)。
失败时,file() 返回 **false**

<?php
   $content = file("test.txt");
   var_dump($content);
?>

9、向文件写入一个字符串 fwrite()

fwrite(resource $handle, string $string, int $length = ?): int

fwrite()string 的内容写入 文件指针 handle 处。

注意一: 文件必须以写入或读写方式打开才可以进行写入操作
注意二: 在写入时,文件被创建所在的目录,也必须要有写入的权限才可以.否则不能创建文件

<?php
   $file = fopen("1.txt", 'w');
   fwrite($file, "hello\n");
   fwrite($file, "world");
   fclose($file);
?>

10、写入文件内容 fputs()

fputs(resource $handle, string $string, int $length = ?): int

此函数是该函数的别名:fwrite()

<?php
   $file = fopen("2.txt", 'w');
     // 使用 fputs 写入
   fputs($file, "hello\n");
   // 使用 fwrite 写入
   fwrite($file, "world");
   fclose($file);
?>

11、将一个字符串写入文件中 file_put_contents()

file_put_contents(
    string $filename,
    mixed $data,
    int $flags = 0,
    resource $context = ?
): int

和依次调用 fopen()fwrite() 以及 fclose() 功能一样。

参数 data 可以是数组(但不能为多维数组).

<?php

   $animals = ["chicken", "duck", "goose",'dog','pig'];
   file_put_contents('1.txt', $animals);

?>

文件访问权限:

在 PHP 中,通过 fopen() 函数打开文件时,必须要指定打开文件的访问权限。文件访问权限:

访问权限 说明
r 以只读方式打开文件
r+ 以读写方式打开文件
w 以写入方式打开文件
注:如果该文件不存在,则创建文件;如果该文件存在,则替换现有文件
w+ 以读写方式打开文件
注:如果该文件不存在,则创建文件;如果该文件存在,则替换现有文件
a 以写入方式打开文件,并向文件末尾追加内容
注:如果该文件不存在,则创建文件
a+ 以读写方式打开文件,并向文件末尾追加内容
注:如果该文件不存在,则创建文件
x 创建并以写入方式打开文件
x+ 创建并以读写方式打开文件

二:字符串函数

一系列用于实现字符串的相关操作

常用字符串函数:

函数名 说明
chr() 从指定ASCII值返回字符
explode() 分割字符串
trim() 移除字符串两侧的空白字符或其他字符
ltrim() 移除字符串左侧的空白字符或其他字符
rtrim() 移除字符串左侧的空白字符或其他字符
md5() 使用MD5算法对字符串进行加密
nl2br() 将字符串中的\n转换为
ord() 返回字符串中第一个字符的ASCII值
strlen() 返回字符串长度
str_replace() 替换字符串中的一些字符(大小写敏感)
strpos() 返回字符串在另一字符串中第一次出现的位置(大小写敏感)
strrpos() 返回字符串在另一字符串中最后一次出现的位置(大小写敏感)
strtolower() 把字符串转换为小写字母
strtoupper() 把字符串转换为大写字母
substr() 截取字符串

例如:

<?php
header("content-type:text/html;charset=utf-8");

$a = trim("==中国==","=");
echo "移除字符串两侧的其他字符:{$a}<br/><br/>";
//移除字符串,“==中国==”两侧的“=”字符

$a = explode("-","北京-上海-深圳");
echo "分割字符串:";
print_r($a);
echo "<br/><br/>";
//将字符串按照“-”进行分割,并返回数组
//Array ( [0] => 北京 [1] => 上海 [2] => 深圳 )

$a = strlen("你好中国");
echo "字符串长度:{$a}<br/><br/>";
//获取字符串长度

$a = md5("张三");
echo "md5加密:{$a}<br/><br/>";
//通过MD5算法,对字符串“张三”进行加密

$a = str_replace("Hello", "你好", "Hello,北京");
echo "字符串替换:{$a}<br/><br/>";
//将字符串里的“hello”替换为“你好”

$a = strtolower("HelloWorld");
echo "转为小写字母:{$a}<br/><br/>";
//将字母转为小写字母

$a = strtoupper("HelloWorld");
echo "转为大写字母:{$a}<br/><br/>";
//将字母转为大写字母

$a = substr("HelloWorld", 5,5);
echo "字符串截取:{$a}<br/><br/>";
//截取从第五个字符向右数五个字符,不包括第五个字符。
$str_val = substr($arr[3],3);
//将下标为3的值从第三个字符开始截取后赋值给变量 $str_val。