>백엔드 개발 >PHP 문제 >PHP에서 파일의 모든 데이터를 문자열로 저장하는 방법

PHP에서 파일의 모든 데이터를 문자열로 저장하는 방법

青灯夜游
青灯夜游원래의
2021-08-06 15:09:153708검색

이전 기사에서는 전체 파일을 한 번에 읽어서 모든 데이터를 얻는 방법을 소개했습니다. 관심이 있으시면 링크를 클릭하여 "php 파일 작업: 의 모든 데이터를 얻는 방법"을 볼 수 있습니다. 파일을 한 번에". 오늘은 필요한 경우 전체 파일을 한 번에 참조할 수 있는 또 다른 방법을 소개하겠습니다.

오늘 소개해드릴 방법은 파일 전체를 한 번에 읽을 수 있을 뿐만 아니라, 읽은 파일 내용을 문자열로 저장할 수도 있다는 점 정말 놀랍지 않나요? 이를 위해서는 PHP 내장 함수 file_get_contents()를 사용해야 합니다. 오늘 이 함수에 대해 알아보겠습니다.

"test.txt" 파일을 예로 들어 보겠습니다. 파일 내용은 다음과 같습니다.

PHP에서 파일의 모든 데이터를 문자열로 저장하는 방법

먼저 file_get_contents() 함수를 사용하여 파일을 읽고 내용을 문자열에 저장하는 방법을 살펴보겠습니다.

<?php
header("Content-Type: text/html;charset=utf-8");    //设置字符编码
$file = &#39;test.txt&#39;;
$filestr = file_get_contents($file);
if($filestr){
  echo $filestr;
}else{
  echo &#39;读取失败!&#39;;
}
?>

출력 결과:

PHP에서 파일의 모든 데이터를 문자열로 저장하는 방법

파일 작업을 열거나 닫을 필요가 없으며, "file_get_contents($file"을 직접 사용하면 전체 파일을 한 번에 읽을 수 있음을 알 수 있습니다. )" 문, 이는 이전에 소개된 readfile() 함수와 매우 유사하지만 여전히 다릅니다. file_get_contents() 함수는 읽은 데이터를 문자열에 저장하는 반면, readfile() 함수는 읽은 데이터를 저장합니다. 출력 버퍼에서. file_get_contents($file)”语句就可以一次性读取整个文件了,这一点和之前介绍的readfile()函数很像,但它们还是有所不同的:file_get_contents()函数会将读取的数据存入一个字符串中,而readfile()函数是存入输出缓冲中。

因此readfile()函数不需要echo、print等输出语句就可以输出,直接“readfile($file);”就行;而file_get_contents()函数需要借助输出语句才能将读取的内容进行输出,“echo file_get_contents($file)”。

下面我们来具体了解一下file_get_contents()函数的用法:

file_get_contents($filename,$include_path,$context,$offset,$max_length)函数只有一个必需参数$filename(要读取的文件,可以是文件名,也可是文件路径),但有4个可省略的参数:$include_path(默认值FALSE)、$context(文件句柄环境,值可为NULL)、$offset(开始读取的位置)、$max_length(读取字节数)。

其中,不能对远程文件使用$offset参数;如果省略$max_length参数,则会和上面示例那样,默认读取文件的全部内容。

下面我们来看看$offset$max_length参数。

<?php
header("Content-Type: text/html;charset=utf-8");    //设置字符编码
$file = &#39;test.txt&#39;;
$filestr1 = file_get_contents($file,FALSE,NULL,3);
echo $filestr1;
$filestr2 = file_get_contents($file,FALSE,NULL,0,15);
echo "<br>".$filestr2;
?>

输出结果:

PHP에서 파일의 모든 데이터를 문자열로 저장하는 방법

可以看出,$max_length参数设置为15,却只获取了7个字符,这是为什么呢?

那是因为:在file_get_contents()函数中一个 UTF-8 编码的汉字占三个字符长度。而如果设置的获取长度不够,无法获取到的那个中文字符,就会显示为

따라서 readfile() 함수는 echo 및 print와 같은 출력 문 없이 출력할 수 있습니다. file_get_contents() 함수에는 다음이 필요합니다. 읽을 수 있는 출력문 도움말 내용은 "echo file_get_contents($file)"로 출력됩니다.

file_get_contents() 함수의 사용법을 자세히 살펴보겠습니다.

PHP에서 파일의 모든 데이터를 문자열로 저장하는 방법file_get_contents($filename,$include_path,$context,$offset,$max_length)이 함수에는 필수 매개변수가 하나만 있습니다. $ filename(읽을 파일은 파일 이름 또는 파일 경로일 수 있음), 그러나 생략할 수 있는 매개 변수는 4개입니다: $include_path(기본값 FALSE) , $context (파일 핸들 환경, 값은 NULL일 수 있음), $offset (읽기 시작 위치), $max_length (읽은 바이트 수).

그 중 $offset 매개변수는 원격 파일에 사용할 수 없으며 $max_length 매개변수를 생략하면 기본적으로 파일의 전체 내용을 다음과 같이 읽습니다. 위의 예에서. $offset$max_length 매개변수를 살펴보겠습니다.

<?php
header("Content-Type: text/html;charset=utf-8");    //设置字符编码
$file = &#39;test.txt&#39;;
$filestr1 = file_get_contents($file,FALSE,NULL,6);
echo $filestr1;
$filestr2 = file_get_contents($file,FALSE,NULL,0,16);
echo "<br>".$filestr2;
$filestr3 = file_get_contents($file,FALSE,NULL,0,18);
echo "<br>".$filestr3;
?>

출력 결과:

3. png🎜🎜$max_length 매개변수가 15로 설정되어 있는데 7자만 얻어지는 것을 볼 수 있습니다. 왜 그럴까요? 🎜🎜그 이유는 file_get_contents() 함수에서 UTF-8로 인코딩된 한자의 길이가 3자를 차지하기 때문입니다. 그리고 설정된 획득 길이가 부족할 경우 획득할 수 없는 한자는 로 표시되나요? 아니요. 🎜rrreee🎜출력 결과: 🎜🎜🎜🎜🎜그렇습니다. 더 알고 싶다면 여기를 클릭하세요. → →🎜php 비디오 튜토리얼🎜🎜🎜마지막으로 클래식 강좌인 "🎜PHP 문자열 처리(옥소녀심경편)🎜"을 읽어보시길 추천합니다. 무료입니다~ 와서 배워보세요! 🎜

위 내용은 PHP에서 파일의 모든 데이터를 문자열로 저장하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.