PHP - CSV 파일 처리
안녕하세요, 미래의 PHP 마법사 여러분! 오늘 우리는 CSV 파일의 세계와 PHP를 사용하여 이를 어떻게 처리하는지에 대한 흥미로운 여정을 시작할 것입니다. 여러분의 친절한 이웃 컴퓨터 선생님이자 저는 이 모험을 가능한 한 재미있고 유익하게 만들 것을 약속드립니다. 그러면 가상의魔杖(키보드)을 집어들고, 시작해 보겠습니다!
CSV 파일이란?
코딩을 시작하기 전에, 우리가 다루게 될 것을 이해해 보겠습니다. CSV는 "Comma-Separated Values"의 약자로, 스프레드시트나 데이터베이스와 같은 표 형식의 데이터를 저장하는 간단한 파일 형식입니다. 파일의 각 줄은 표의 행을 나타내며, 각 행의 값들은 쉼표로 구분됩니다.
예를 들어, CSV 파일은 다음과 같이 보일 수 있습니다:
Name,Age,City
John Doe,30,New York
Jane Smith,25,London
Bob Johnson,40,Paris
이제 CSV 파일이 무엇인지 알았으니, PHP에서 이를 어떻게 처리하는지 배워보겠습니다!
The fgetcsv() Function
CSV 파일을 처리하는 첫 번째 마법의 주문은 fgetcsv()
함수입니다. 이 함수는 파일에서 한 줄을 읽고, 지정된 구분자를 사용하여 배열로 파싱합니다.
기본 사용법
다음은 fgetcsv()
를 사용하는 간단한 예제입니다:
<?php
$file = fopen("data.csv", "r");
while (($data = fgetcsv($file)) !== FALSE) {
print_r($data);
}
fclose($file);
?>
이를 분해해 보겠습니다:
- 우리는 "data.csv" 파일을 읽기 모드로 열습니다.
- while 루프를 사용하여 파일을 줄별로 읽습니다.
-
fgetcsv($file)
는 한 줄을 읽고 배열로 변환합니다. -
print_r()
를 사용하여 각 배열을 출력합니다. - 마지막으로, 파일을 닫습니다.
고급 사용법
이제 약간 더 재미있는 것을 해보겠습니다! 우리의 CSV가 쉼표 대신 세미콜론을 사용하는 경우 어떻게 할까요? 문제없습니다! fgetcsv()
는 우리를 도와줍니다:
<?php
$file = fopen("data.csv", "r");
while (($data = fgetcsv($file, 1000, ";")) !== FALSE) {
echo "Name: " . $data[0] . ", Age: " . $data[1] . ", City: " . $data[2] . "<br>";
}
fclose($file);
?>
이 예제에서는 fgetcsv()
에 두 개의 추가 매개변수를 추가했습니다:
- 두 번째 매개변수(1000)는 읽을 수 있는 최대 줄 길이입니다.
- 세 번째 매개변수(";"는 구분자입니다.
우리는 출력을 더 읽기 쉽게 하기 위해 형식을 조정했습니다. 멋지지 않나요?
The fputcsv() Function
이제 CSV 파일을 읽는 것을 마스터했으니, 이를 만드는 방법을 배워보겠습니다! fputcsv()
함수가 우리의 마법 주문입니다.
기본 사용법
다음은 간단한 예제입니다:
<?php
$data = array(
array('Name', 'Age', 'City'),
array('John Doe', '30', 'New York'),
array('Jane Smith', '25', 'London'),
array('Bob Johnson', '40', 'Paris')
);
$file = fopen('new_data.csv', 'w');
foreach ($data as $row) {
fputcsv($file, $row);
}
fclose($file);
echo "CSV file created successfully!";
?>
이를 분해해 보겠습니다:
- 우리는 배열의 배열을 만들어, 각 내부 배열이 CSV의 행을 나타냅니다.
- 우리는 새 파일 'new_data.csv'를 쓰기 모드로 엽니다.
- 우리는 루프를 통해 데이터 배열을 순회하면서
fputcsv()
를 사용하여 각 행을 파일에 씁니다. - 파일을 닫고 성공 메시지를 출력합니다.
고급 사용법
이제 약간 더 복잡한 것을 해보겠습니다! 예를 들어, 우리의 데이터에 쉼표나 기타 특수 문자가 포함된 경우 어떻게 할까요? 이를 위해 fputcsv()
의 추가 매개변수를 사용할 수 있습니다:
<?php
$data = array(
array('Name', 'Favorite Quote'),
array('Shakespeare', 'To be, or not to be'),
array('Einstein', 'Imagination is more important than knowledge')
);
$file = fopen('quotes.csv', 'w');
foreach ($data as $row) {
fputcsv($file, $row, '|', '"', '\\');
}
fclose($file);
echo "Quotes CSV file created successfully!";
?>
이 예제에서는 fputcsv()
의 추가 매개변수를 사용했습니다:
- 세 번째 매개변수 ('|')는 구분자를 설정합니다.
- 네 번째 매개변수 ('"')는 둘러싸는 문자를 설정합니다.
- 다섯 번째 매개변수 ('\')는 이스케이프 문자를 설정합니다.
이는 데이터에 쉼표나 기타 특수 문자가 포함된 경우 유용합니다.
모든 것을 통합하다
이제 읽고 쓰는 기술을 결합하여 CSV 파일 변환기 만들어 보겠습니다!
<?php
// 세미콜론으로 구분된 CSV 파일에서 읽기
$input_file = fopen("input.csv", "r");
$output_file = fopen("output.csv", "w");
while (($data = fgetcsv($input_file, 1000, ";")) !== FALSE) {
// 쉼표로 구분된 CSV 파일에 쓰기
fputcsv($output_file, $data);
}
fclose($input_file);
fclose($output_file);
echo "CSV file converted successfully!";
?>
이 스크립트는 세미콜론으로 구분된 CSV 파일을 읽고, 그 내용을 쉼표로 구분된 새 CSV 파일로 씁니다. 마법이 아닐까요?
결론
축하합니다, 젊은 PHP 마법사 여러분! 여러분은 PHP에서 CSV 파일을 처리하는 기본을 배웠습니다. 연습이 완벽을 만든다는 것을 기억하며, 이 함수들을 실험해 보지 마세요. 누가 다음 CSV 마법사 최고의 자리에 오를지 누가 알겠는가!
여기 우리가 배운 방법들의 빠른 참조 표입니다:
함수 | 목적 | 기본 문법 |
---|---|---|
fgetcsv() | CSV 파일 읽기 | fgetcsv($file, $length, $delimiter, $enclosure, $escape) |
fputcsv() | CSV 파일 쓰기 | fputcsv($file, $fields, $delimiter, $enclosure, $escape) |
codding을 즐기시고, 여러분의 CSV 파일이 항상 올바르게 형식화되길 바랍니다!
Credits: Image by storyset