Web 프로그래밍/PHP / / 2013. 11. 15. 10:52

[PHP] 텍스트파일 fopen, fwrite 사용 법

목차

text file로 부터 데이터를 읽어 웹브라우저 화면에 출력한다
/var/www/data/dataFile.txt에 다음과 같은 데이터가 저장되어 있다
username1 1234
username2 4321
username3 abcd

1)파일로 부터 데이터를 읽기 위해서 fopen이라는 함수를 이용해 읽기 권한으로 파일을 열어야 한다
$dataFile = "/var/www/data/dataFile.txt";
$fh = fopen($dataFile, 'r');

2)dataFile.txt에서 5byte만 읽기 
<?
$dataFile = "/var/www/data/dataFile.txt";
$fh = fopen($dataFile, 'r');
$theData = fread($fh, 5);
fclose($fh);
echo $theData;
?>
결과 :
usern 

3)filesize함수로 전체 파일 사이즈를 알아내고 전체 데이터를 $theData 변수에 저장(단위 byte)
<?
$dataFile = "dataFile.txt";
$fh = fopen($dataFile, 'r');
$theData = fread($fh, filesize($dataFile));
fclose($fh);
echo $theData;
?>
결과 :
username1 1234 username2 4321 username3 abcd 

4)라인 한 줄을 배열에 저장해서 출력 
<?
$dataFile = "dataFile.txt";
$fh = fopen($dataFile, 'r');
$theData = fread($fh, filesize($dataFile));
$dataArray = preg_split("/[\r\n\t]/", $theData);
print_r($dataArray);
echo "<br>";
var_dump($dataArray);
?>

결과 :
Array ( [0] => username1 1234 [1] => username2 4321 [2] => username3 abcd )
array(4) { [0]=>  string(14) "username1 1234" [1]=>  string(14) "username2 4321" [2]=>  string(14) "username3 abcd" [3]=>  string(0) "" } 

5)한 줄씩 입력받고 출력
<?
$dataFile="dataFile.txt";
$fh = fopen($dataFile, 'r');
while($line=fgets($fh))
{
    print $line."<br>";
}
fclose($fp);
?>

결과 :
username1 1234
username2 4321
username3 abcd 

6)explode함수로 데이터를 구분해서 배열에 저장 후 출력

<?

$dataFile = "dataFile.txt";
$fh = fopen ($dataFile, "r");
$contents = fread ($fh, filesize($dataFile));
fclose ($fh);

$delimiter = " ";
$splitcontents = explode($delimiter, $contents);
$counter = "";

echo $contents;
?>

<br>

<?
foreach ( $splitcontents as $data)
{

$counter = $counter+1;
echo "<b>Split $counter: </b> $data<br>";
}

?>

결과 :
username1 1234 username2 4321 username3 abcd 
Split 1:  username1
Split 2: 1234 username2
Split 3: 4321 username3
Split 4: abcd 


7)

$dataFile = "dataFile.txt";
$fh = fopen ($dataFile, "r");
$contents = fread ($fh, filesize($dataFile));
fclose ($fh);
$lines = preg_split("/\n|\r\n/", $contents);
foreach ($lines as $linenum => $linedata) {
   print "<br><b>Line $linenum</b><br>";
   $columndata = preg_split("/ /", $linedata);
   print_r($columndata);
}

결과 :
Line 0
Array ( [0] => username1 [1] => 1234 )
Line 1
Array ( [0] => username2 [1] => 4321 )
Line 2
Array ( [0] => username3 [1] => abcd ) 

#$columndata = preg_split("//", $linedata); 이렇게 하면 문자 하나하나를('u','s','e','r'...) 배열에 저장할 수 있다

8) space tab newline을 구분자로 할 때 각 문자열을 배열에 저장
<?
$array = preg_split ("/\s+/", "Here  are    to    many  spaces in   between \n hahaah   babo");
print_r($array);
?>

결과 :
Array ( [0] => Here [1] => are [2] => to [3] => many [4] => spaces [5] => in [6] => between [7] => hahaah [8] => babo ) 

 

 
 
 
 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유