PHP - CSV 파일 처리

안녕하세요, 미래의 PHP 마법사 여러분! 오늘 우리는 CSV 파일의 세계와 PHP를 사용하여 이를 어떻게 처리하는지에 대한 흥미로운 여정을 시작할 것입니다. 여러분의 친절한 이웃 컴퓨터 선생님이자 저는 이 모험을 가능한 한 재미있고 유익하게 만들 것을 약속드립니다. 그러면 가상의魔杖(키보드)을 집어들고, 시작해 보겠습니다!

PHP - Handle CSV File

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);
?>

이를 분해해 보겠습니다:

  1. 우리는 "data.csv" 파일을 읽기 모드로 열습니다.
  2. while 루프를 사용하여 파일을 줄별로 읽습니다.
  3. fgetcsv($file)는 한 줄을 읽고 배열로 변환합니다.
  4. print_r()를 사용하여 각 배열을 출력합니다.
  5. 마지막으로, 파일을 닫습니다.

고급 사용법

이제 약간 더 재미있는 것을 해보겠습니다! 우리의 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!";
?>

이를 분해해 보겠습니다:

  1. 우리는 배열의 배열을 만들어, 각 내부 배열이 CSV의 행을 나타냅니다.
  2. 우리는 새 파일 'new_data.csv'를 쓰기 모드로 엽니다.
  3. 우리는 루프를 통해 데이터 배열을 순회하면서 fputcsv()를 사용하여 각 행을 파일에 씁니다.
  4. 파일을 닫고 성공 메시지를 출력합니다.

고급 사용법

이제 약간 더 복잡한 것을 해보겠습니다! 예를 들어, 우리의 데이터에 쉼표나 기타 특수 문자가 포함된 경우 어떻게 할까요? 이를 위해 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