2013-06-03 4 views
0

은 내가, 목록에 물건을 추가 할 일을 읽고, 목록을 지울 수있는 프로그램을 만들려고 노력하고 있습니다. 명확한 기능이 완벽하게 작동하지만 한 번에 두 줄 이상을 추가하거나 읽을 수는 없습니다. 나는 fwrite($handle, $MyString);를 사용하고 있지만 그 $MyString에 전체 파일의 모든 내용을 대체합니다. 파일에서 정보를 얻으려면 $list = fgets($handle);을 사용하고 echo를 사용하여 인쇄하십시오. 이것은 파일의 첫 번째 행을 읽습니다. 도움이 되었습니까? 감사합니다.하나의 텍스트 파일에 여러 문자열을 추가하고 모두 읽을 수 있습니까?

Getlist 코드 :

<?php 
$myFile = "needlist.txt"; 
$fh = fopen($myFile, 'r'); 
$theData = fgets($fh); 
fclose($fh); 
echo $theData; 
?> 

목록 코드에 추가

<?php 
$neededlist = "needlist.txt"; 
$fh = fopen($neededlist, 'w'); 
$user_message = $_REQUEST['txtweb-message']; 
$needed .= $user_message; 
$needed .= "\n"; 
fwrite($fh, $needed); 
fclose($fh); 
echo "You have successfully added ", $user_message; 
?> 
+1

당신은 당신의 질문을 수정 할 수와, 코드의 전체를하시기 바랍니다 추가? – andrewsi

+1

fopen에 '('+ w '$ 파일명)'=> '는 fopen ($ 파일명,'A + ')'. – raina77ow

+0

파일을 여는 방법은 ... fopen ($ filename, "a")이어야합니다. – Orangepill

답변

0

당신이 "A"모드 옵션을 사용하여 파일 핸들을 열고있는 파일에 쓸? "w"또는 "X"와 열기는 깨끗한 파일로 시작 있도록 자릅니다 (http://php.net/fopen)

는 fgets를(); 줄의 끝까지 읽습니다 (http://php.net/fgets). 전체 파일을 얻으려면 당신은 시도 할 수 있습니다 :

var $list = ""; 
var $line = ""; 
while ($line = fgets($handle)) { 
    $list = $list . "\n" . $line; 
} 
echo $list; 

당신은 FREAD이 IIRC 줄 바꿈을 읽지 않기 때문에 "\ n"을 추가 할. 또한 file_get_contents 및 fread와 같은 상황에서 더 적합한 몇 가지 기능이 있습니다.

+0

'file_get_contents()'와 같지 않습니까? – Barmar

+0

은 제외하고 사실 당신은 파일 이름으로 file_get_contents를 호출하면 파일 핸들과는 fgets()를 호출 - 그래. 아마 file_get_contents를 사용하고 통역사가 핵심적인 것을 처리하게하는 것이 더 좋을 것입니다. – user1958756

0

는 fgets는 하나의 문자열을 반환합니다. 당신은 그런 사이클에서 사용한다 :

while (($buffer = fgets($handle, 4096)) !== false) { 
    echo $buffer; 
} 
관련 문제