php로 일반 텍스트 파일 읽기
서버에 다음 정보가 있는 텍스트 파일이 있습니다.
Data1
Data2
Data3
.
.
.
DataN
PHP를 사용하여 텍스트 파일(한 줄씩)의 모든 정보를 읽으려면 어떻게 해야 합니까?
<?php
$fh = fopen('filename.txt','r');
while ($line = fgets($fh)) {
// <... Do your work with the line ...>
// echo($line);
}
fclose($fh);
?>
이렇게 하면 한 줄씩 읽을 수 있습니다.php.net/fgets 에서 Mac과 관련된 End-of-Line 문제에 대한 참고 사항을 읽어 보십시오.
http://php.net/manual/en/function.file-get-contents.php
http://php.net/manual/en/function.explode.php
$array = explode("\n", file_get_contents($filename));
이렇게 하면 실제로 한 줄씩 읽는 것이 아니라 한 줄씩 사용할 수 있는 배열을 얻을 수 있습니다.여러 가지 대안이 있습니다.
$filename = "file.txt";
$lines = array();
$fp = fopen($filename, "r");
if(filesize($filename) > 0){
$content = fread($fp, filesize($filename));
$lines = explode("\n", $content);
fclose($fp);
}
print_r($lines);
" 서코에파전일내체복다변니사됩에수은용이의드▁variable▁the다▁in▁to니▁copied▁of"로 복사됩니다.$content그런 다음 배열 변수로 분할합니다.$lines각 줄 문자가 파일에 표시됩니다.
다음 파일을 사용하여 배열을 생성할 수도 있습니다.
$array = file('/path/to/text.txt');
W3학교는 여러분의 친구입니다: http://www.w3schools.com/php/func_filesystem_fgets.asp
그리고 여기: http://php.net/manual/en/function.fopen.php 에는 모드가 무엇인지를 포함하여 오픈에 대한 더 많은 정보가 있습니다.
W3Schools의 설명:
<?php
$file = fopen("test.txt","r");
while(! feof($file))
{
echo fgets($file). "<br />";
}
fclose($file);
?>
fopen은 파일을 엽니다(이 경우 테스트).읽기 전용을 의미하고 포인터를 파일의 시작 부분에 배치하는 모드 'r'의 txt
while 루프는 파일의 끝(feof)에 있는지 확인하기 위해 테스트하고, 그렇지 않은 동안에는 포인터가 있는 현재 줄을 가져오는 fgets를 호출합니다.
파일이 끝날 때까지 이 작업을 계속한 다음 파일을 닫습니다.
다음과 같은 방법을 사용해 보십시오.
$filename = 'file.txt';
$data = file($filename);
foreach ($data as $line_num=>$line)
{
echo 'Line # <b>'.$line_num.'</b>:'.$line.'<br/>';
}
$file="./doc.txt";
$doc=file_get_contents($file);
$line=explode("\n",$doc);
foreach($line as $newline){
echo '<h3 style="color:#453288">'.$newline.'</h3><br>';
}
문자열을 처리하는 위치와 방법을 특별히 정의하지 않는 한 file_get_contents()를 사용합니다.긴 반복 및 해결 방법 블록이 필요하지 않습니다.
예를 들어 최신 버전에서 버전을 읽는 중입니다.txtin /client/(조건 ? do : other)를 사용하는 폴백 포함)
$version = file_exists("client/latestversion.txt") ? file_get_contents("client/latestversion.txt") : "0.0.0.0";
여기, 우리는 최신 버전을 확인하고 있습니다.txt가 존재하며 읽기를 요청하면 "0.0.0.0"이 출력됩니다.그것은 일을 완수하는 하나의 라이너입니다.
그러면 당신은 그냥 메아리칠 뿐입니다.
echo "The version is: " . $version;
아니면 이렇게 불러도 됩니다.
printf("The version is: %s", $version);
이 경우 해당 파일에 대한 액세스 권한에 따라 이 시점에서 문자열을 정리하는 것이 좋습니다.
폴더에서 txt 파일 그룹을 읽고 내용을 이렇게 에코할 수 있습니다.
<?php
$directory = "folder/";
$dir = opendir($directory);
$filenames = [];
while (($file = readdir($dir)) !== false) {
$filename = $directory . $file;
$type = filetype($filename);
if($type !== 'file') continue;
$filenames[] = $filename;
}
closedir($dir);
?>
$aa = fopen('a.txt','r');
echo fread($aa,filesize('a.txt'));
$a = fopen('a.txt','r');
while(!feof($a)){echo fgets($a)."<br>";}
fclose($a);
$your_proxy = file_get_proxyfile_to_read.txt";
Payload에서 위에 게시된 코드는 잘 작동합니다.다른 사람들도 같은 문제에 부딪힐 수 있기 때문에 저는 여기에 무언가를 추가하고 싶습니다.당신의 코드를 사용하여 .txt 파일에서 가져온 $line과 값을 비교하려고 했습니다.내 키워드가 한 줄과 일치하는 것을 알면서도 계속 오류가 발생했습니다.이것은 코드의 예시입니다...
textfile.txt content example:
text1
text2
keyword
text3
$keyword = 'keyword';
while($line = fgets($txt_file)) {
if (substr_compare($line, $keyword, 0) === 0) {
$value = $line;
}
}
echo $value; // returns nothing because the if statement was false
문제는 각각의 $라인이 끝에 새로운 라인을 달고 있다는 것입니다.하지만 제 경우에는 .txt 파일을 만들 때 새 행을 입력하기만 하면 "\n" 또는 idk "\r\n"과 같은 항목으로 지정되지 않습니다.어쨌든 동일한 문제가 발생할 경우 빈 공간을 제거하기 전에 $라인을 잘라내십시오(). 이 경우 새 라인이나 오류가 계속 발생할 수 있습니다.이상한 결과를 얻지 않고 이를 수행하는 가장 짧고 쉬운 방법은 다음과 같은 문장에서 간단히 트리밍하는 것입니다.
while($line = trim(fgets($txt_file))) {
if (substr_compare($line, $keyword, 0) === 0) {
$value = $line;
}
}
echo $value; // result: keyword
그리고 예, if 문 결과가 TRUE였음에도 불구하고 $value는 키워드의 시작과 끝에 공백이 있는 "키워드"의 결과를 가질 것입니다.이상한 것들...
언급URL : https://stackoverflow.com/questions/4103287/read-a-plain-text-file-with-php
'programing' 카테고리의 다른 글
| 각도:HttpClient에서 파일을 다운로드하는 방법은 무엇입니까? (0) | 2023.08.06 |
|---|---|
| 저장 프로시저 SQLWARN 종료 처리기가 호출되지 않았습니다. (0) | 2023.08.06 |
| 덱스를 병합할 수 없습니다. (0) | 2023.08.01 |
| Angular 5에서 타이머를 실행하는 방법 (0) | 2023.08.01 |
| IntelliJ IDEA(또는 Android Studio)용 Android 지원 플러그인은 이 프로젝트를 열 수 없습니다. (0) | 2023.08.01 |