PHP 内置函数库提供了两个函数,用于对文件流执行写入操作。这些函数是 fwrite() 和 fputs()。
为了能够在文件中写入数据,必须以写入模式 ( w )、附加模式 ( a )、读/写模式( r+ 或 w+ )或二进制写入/附加模式( rb+、wb+ 或 wa )打开文件。
fputs() 函数
fputs() 函数将字符串写入以可写模式打开的文件中。
fputs(resource $stream, string $string, int $length)
此处,$stream 参数是在可写模式下打开的文件的句柄。$string 参数是要写入的数据,$length 是指定要写入的最大字节数的可选参数。
fputs() 函数返回写入的字节数,如果函数不成功,则返回 false。
示例
下面的代码将打开一个新文件,在其中写入一个字符串,并返回写入的字节数。
<?php
$fp = fopen("hello.txt", "w");
$bytes = fputs($fp, "Hello World\n");
echo "bytes written: $bytes";
fclose($fp);
?>
它将产生以下输出 -
示例
如果需要在较早的现有文件中添加文本,则必须以追加模式 ( a ) 打开该文件。让我们在前面的示例中的同一文件中再添加一个字符串。
<?php
$fp = fopen("hello.txt", "a");
$bytes = fputs($fp, "Hello PHP");
echo "bytes written: $bytes";
fclose($fp);
?>
如果您在文本编辑器中打开 “hello.txt” 文件,您应该可以看到其中的两行。
示例
在下面的 PHP 脚本中,在循环中逐行读取已存在的文件 (hello.txt),并将每一行写入另一个文件 (new.txt)
假设“hello.txt” 由以下文本组成 -
启科普在线教程
PHP 教程
以下是创建现有文件副本的 PHP 代码 -
<?php
$file = fopen("hello.txt", "r");
$newfile = fopen("new.txt", "w");
while(! feof($file)) {
$str = fgets($file);
fputs($newfile, $str);
}
fclose($file);
fclose($newfile);
?>
新创建的 “new.txt” 文件应具有完全相同的内容。
fwrite() 函数
frwrite() 函数是 fread() 函数的对应函数。它执行二进制安全的写入操作。
fwrite(resource $stream, string $data, ?int $length = null): int|false
此处,$stream 参数是指向以可写模式打开的文件的资源。要写入文件的数据在 $data 参数中提供。可以提供可选的 $length 参数来指定要写入的字节数。它应该是 int ,写入将在写入长度字节数或到达数据末尾后停止,以先到者为准。
fwrite() 函数返回写入的字节数,失败时返回 false 以及 E_WARNING。
示例
以下程序将打开一个新文件,执行写入操作并显示写入的字节数。
<?php
$file = fopen("/PhpProject/sample.txt", "w");
echo fwrite($file, "Hello 启科普在线教程!!!!!");
fclose($file);
?>
示例
在下面给出的示例代码中,以二进制读取模式打开的现有文件 “welcome.png”。fread() 函数用于读取 “$data” 变量中的字节,然后写入另一个文件 “new.png” -
<?php
$name = "welcome.png";
$file = fopen($name, "rb");
$newfile = fopen("new.png", "wb");
$size = filesize($name);
$data = fread($file, $size);
fwrite($newfile, $data, $size);
fclose($file);
fclose($newfile);
?>
运行上述代码。当前目录现在应该具有现有 “welcome.png” 文件的副本。