728x90
반응형
■ PHP DB 데이터 CSV 파일 저장 (한글깨짐)
■ 참고
* CSV 저장 시 콤마(,)로 컬럼을 구분, "\r\n"을 이용해 줄바꿈을 할 수 있음
(콤마가 아닌 탭공백으로 구분할 수도 있지만 하기 예제는 콤마로 구분)
* 컬럼값이 숫자일 경우 0으로 시작할 경우 데이터가 상이하게 노출되는 현상이 발생할 수 있음
> 이 때 데이터 앞에 ' (작은따옴표)를 붙여주면 표시형식이 변환되지 않음
■ 예제
<?php
// DB 연동
$mysqli = new mysqli( $localhost, $user, $password );
$mysqli -> set_charset("utf8");
// 파일명 지정
$filename = "test_" . date("Ymd") . ".csv";
header('Content-Type:text/css;charset=EUC-KR;');
header('Expires: 0');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: private, no-transform, no-store, must-revalidate');
header("Content-disposition: attachment; filename=" . $filename);
// 쉼표 필터 함수, 한글화 처리 (한글깨짐방지)
function filterData($string) {
$string = iconv("UTF-8","EUC-KR",($string));
return $string;
}
// 컬럼명
$aTitles = array( "이름", "나이", "성별" );
$csv_dump = filterData(implode(",", $aTitles));
// DB 데이터 가져오기
$sql ="
SELECT user_name, user_age, user_sex
FROM table_name
";
$result = mysqli_query($mysqli, $sql);
while( $row = mysqli_fetch_assoc($result) ){
$csv_dump .= "\r\n"; // 줄바꿈
$csv_dump .= filterData($row['name']) . "," . filterData($row['age']) . "," . filterData($row['tel']); // 콤마(,)로 컬럼 구분
}
echo $csv_dump;
exit;
?>
728x90
반응형
'PHP' 카테고리의 다른 글
[PHP] php date format (DateTime::format) 날짜 포맷 (2) | 2021.07.16 |
---|---|
[PHP] 특수문자 제거 정규식 preg_replace() (4) | 2021.07.14 |
[PHP] 날짜 계산 date() (1) | 2021.07.06 |
[PHP] 조건문 switch case 문 (1) | 2021.05.25 |
[PHP] $_SERVER 함수 (서버함수) (1) | 2021.05.24 |