#mode | Description |
r | 読み取り専用モードで開き、ファイル ポインターをファイル ヘッダーにポイントします。 |
r | 読み取り/書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントします。 |
w | 書き込み用に開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は作成します。 |
w | 読み取り/書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は作成します。 |
a | 書き込み用に開き、ファイル ポインタをファイルの末尾に指します。ファイルが存在しない場合は作成します。 |
a | 読み取り/書き込みモードで開き、ファイル ポインターをファイルの末尾に指します。ファイルが存在しない場合は作成します。 |
#xxxファイル ポインタをファイル ヘッダーに指定して、書き込み用に作成して開きます。ファイルが既に存在する場合、 fopen() 呼び出しは失敗し、FALSE を返し、E_WARNING レベルのエラー メッセージを生成します。ファイルが存在しない場合は作成します。ローカル ファイルのみに適用されます。 | |
x 読み取り/書き込みモードで作成して開きます。その他の動作は x と同じです。 | |
c ファイルを書き込むためにのみ開きます。ファイルが存在しない場合はファイルを作成します。ファイルが存在する場合、ファイルの内容はクリアされず、ファイル ポインタはファイル ヘッダーを指します。 | |
c ファイルを読み取りおよび書き込み用に開き、ファイルが存在しない場合は作成します。ファイルが存在する場合、ファイルの内容はクリアされず、ファイル ポインタはファイル ヘッダーを指します。 | |
读取文件数据,可以使用fgetc()、fgets()、fgetss()等函数
fgetc():从文件中读取一个字符
在对某一个字符进行查找、替换时,就需要有针对性地对某个字符进行读取,在 PHP 中可以使用 fgetc() 函数实现此功能。该函数语法格式如下:
fgetc(resource $handle)
ログイン後にコピー
其中参数 $handle 为使用 fopen() 或 fsockopen() 成功打开的文件资源。
fgetc() 函数可以返回一个包含有一个字符的字符串,该字符是从 $handle 指向的文件中得到。当碰到 EOF 时返回 FALSE。
注意:fgetc() 函数可能返回布尔值 FALSE,也可能返回等同于 FALSE 的非布尔值。所以应该使用===运算符来测试此函数的返回值。
另外,fgetc() 函数可安全用于二进制对象,但不适用于读取中文字符串,因为一个中文通常占用 2~3 个字符。
【示例】使用 fgetc() 函数逐个字符的读取文件中的内容并输出。
<?php
header("Content-Type: text/html;charset=utf-8"); //设置字符编码
$handle = fopen('./test.txt', 'r'); //打开文件
if (!$handle) { //判断文件是否打开成功
echo '文件打开失败!';
}
while (false !== ($char = fgetc($handle))) { //循环读取文件内容
echo $char;
}
fclose($handle); //关闭文件
?>
ログイン後にコピー
fgets()和fgetss():逐行读取文件
fgets() 函数用于一次读取一行数据。函数的语法格式如下:
fgets(resource $handle[, int $length])
ログイン後にコピー
其中参数 $handle 是被打开的文件;参数 $length 为可选参数,用来设置读取的数据长度。函数能够实现从指定文件 $handle 中读取一行并返回长度最大值为 $length-1 个字节的字符串。在遇到换行符、EOF 或者读取了 $length-1 个字节后停止。如果忽略 $length 参数,则默认读取 1k(1024字节)长度。
【示例】使用 fgets() 函数逐行读取文件的内容并输出。
<?php
$handle = @fopen("./test.txt", "r");
if ($handle) {
while (($info = fgets($handle, 1024)) !== false) {
echo $info.'<br>';
}
fclose($handle);
}
?>
ログイン後にコピー
fgetss() 函数是 fgets() 函数的变体,用于读取一行数据,同时 fgetss() 函数会过滤掉读取内容中的 HTML 和 PHP 标记,函数的语法格式如下:
fgetss(resource $handle[, int $length[, string $allowable_tags]])
ログイン後にコピー
参数说明如下:
注意:fgetss() 函数在 PHP7.3 及之后的版本中已经弃用。
【示例】分别使用 fgets() 函数和 fgetss() 函数读取 index.html 文件并输出结果,看一看有什么区别。
<?php
echo '-------使用 fgets() 函数的输出结果:-------<br>';
$handle = @fopen("index.html", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = @fgets($handle, 4096);
echo htmlentities($buffer,ENT_QUOTES,"UTF-8").'<br>';
}
fclose($handle);
}
echo '-------使用 fgetss() 函数的输出结果:-------<br>';
$handle = @fopen("index.html", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = @fgetss($handle, 4096);
echo $buffer.'<br>';
}
fclose($handle);
}
?>
ログイン後にコピー
推荐学习:《PHP视频教程》
以上がphp ファイルを読み取ることができますが、データを書き込めないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2023-04-26 17:59:18
-
2023-04-26 17:47:48
-
2023-04-26 17:41:42
-
2023-04-26 17:37:05
-
2023-04-26 17:31:25
-
2023-04-26 17:27:32
-
2023-04-25 19:57:58
-
2023-04-25 19:53:11
-
2023-04-25 19:49:11
-
2023-04-25 19:41:54