PHP 파일에서 데이터를 읽지만 쓰지 않는 방법: 1. "fopen('file path', 'r')" 문을 사용하여 읽기 전용 방식으로 파일을 엽니다. 2. fgetc(), fgets를 사용합니다. ( ), fgetss() 및 기타 함수를 사용하여 데이터를 읽습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
PHP에서는 fopen() 함수를 사용하여 읽기 전용 방식으로 파일을 열 수 있지만, 데이터 쓰기용이 아닙니다.
PHP의 fopen() 함수를 사용하여 파일이나 URL을 열 수 있습니다. 열기에 성공하면 파일 포인터 리소스가 반환되고, 열기에 실패하면 FALSE가 반환됩니다. 이 함수의 구문 형식은 다음과 같습니다.
fopen(string $filename, string $mode[, bool $use_include_path = false[, resource $context]])
매개변수 설명은 다음과 같습니다.
$filename: 열려는 파일의 URL입니다. 이 URL은 파일이 있는 서버의 절대 경로일 수도 있고, 네트워크 리소스의 파일일 수도 있습니다. 파일 열기 방법(파일 모드)을 설정합니다. 특정 값은 다음 표에서 선택할 수 있습니다.
r | |
---|---|
r+ | |
w | |
w+ | |
a | |
a+ | |
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]]) 参数说明如下:
【示例】分别使用 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!