2012-11-30 4 views
2

fgets()을 사용하는 동안 텍스트 파일의 첫 번째 줄과 마지막 줄을 건너 뛰는 방법을 알아 냈습니다. 첫 번째 행은 if(!$firstLine)으로 해결할 수 있지만 마지막 행을 무시하는 방법이나 첫 행을 무시하는 내 솔루션이 최선의 선택인지는 확실하지 않습니다.PHP, fgets를 사용하여 텍스트 파일의 첫 번째 줄과 마지막 줄 건너 뛰기

+1

file()은 각 행을 배열에 넣으므로 원하는 작업을 쉽게 할 수 있습니다. –

답변

7
fgets($file); //Ignore the first line 
$line = fgets($file); 
$next = fgets($file); 
while ($next !== false) { //check the line after the one you will process next. 
       //This way, when $next is false, then you still have one line left you could process, the last line. 
    //Do Stuff 
    $line = $next; 
    $next = fgets($file); 
} 
+0

일 것이다. – lupatus

+0

충분히 공정합니다. 나는 그 문제를 해결할 것이다. – femtoRgon

-1

불행하게도, 파일() (직렬를 잘 작성 단어가 있는지 확실하지 않습니다) "직렬"스트림으로 파일을 엽니 다, 당신이 자신의 말

+0

그 스트림은 사실이지만, 파일의 끝이 어디인지 모르고 전체 파일을 읽어야한다는 것은 완전히 사실이 아닙니다. '$ fp = fopen ($ path, 'r'); fseek ($ fp, -16); $ end = fgets ($ fp);는 전체 내용을 읽지 않고 파일의 마지막 16 바이트를 반환해야합니다 (16 바이트 이상인 경우). – lupatus

+0

두번째로'file' 함수가 파일을 스트림으로 여는 것이 아니라 여러분의 내용을 읽어서 줄의 배열로 반환한다는 것입니다. – lupatus

+0

제 대답은 질문과 관련이 있습니다. 나는 파일 끝에서 문자를 가져올 방법이 없지만 파일을 읽지 않고 끝의 마지막 줄을 건너 뛰는 방법이 없다고 말하고 있지 않습니다. 마지막 16 바이트를 들여다 보면 마지막 바이트를 건너 뛰지 않으므로 전체 파일을 읽은 다음 마지막 라인을 건너 뛰어야합니다. 아니면 다른 방법이 있습니까? – jorj

0
$lines = file('http://www.example.com/');//or local file 

unset($lines[0]); 
unset($lines[count($lines)-1)]); 
$new_file = implode('', $lines); //may want to use line break "\n" for the join 
+0

줄이 하나만 있거나 없으면 어떻게 되나요? – lupatus

+1

질문은 처음과 마지막 * 줄 *을 건너 뛰는 말로서, 3 이상이 있다고 가정 할 수 있습니다. 나는 물어 보는 것보다 더 할 것이 아무것도 없습니다. –

+0

나는 @ 대곤에 동의합니다. 유효한 답변을 올리는 데 2 ​​개의 싫어요가 없어야합니다 ... – 131

-1

시도를 탐지하기 전에 전체 파일을 읽을해야 함을 의미합니다 이

$str= file_get_contents("file.txt"); 
$arr = preg_split ("\n",$str); 
$n = count($arr); 

$ N 라인의 수이고

$str=""; 
for($i=0;$i<$n;$i++){ 
    if($i>0 && $i<($n-1)){ $str.=$arr[$i]} 
    } 
    /**Str without line 1 and final line */ 
0

파일 내용을 폭발적으로 시도 할 수 있습니다. 그것은 당신이 많이 도움이 될 것입니다! 그 후에 레이블을 지정합니다.

관련 문제