2009-04-21 7 views
5

EDIT :이 질문에 잘못된 부분이 복사되었습니다. 아래 내용이 적절합니다.CSV 파일에 쉼표가 포함 된 문자열을 올바르게 내 보내야합니다.

$values = mysql_query("SELECT lname, fname, email, dtelephone, etelephone, contactwhen, thursday, 
friday, saturday, sunday, monday, comments FROM volunteers_2009 WHERE venue_id = $venue_id"); 

while ($rowr = mysql_fetch_row($values)) { 
    for ($j=0;$j<$i;$j++) { 
     $csv_output .= $rowr[$j].", "; 
    } 
    $csv_output .= "\n"; 
} 

나는 그것이 주석 필드에 쉼표가있는 경우, 그것은 전체 CSV 파일을 던져, 거기에 쉼표가있을 수 있습니다 의견, 심지어 따옴표가있다.

아래 코드는 CSV 파일에 넣기 위해 CSV 문자열에 데이터를로드하는 방법입니다.

댓글 필드 데이터를 올바르게 내보내려면 어떻게해야합니까?

답변

6

큰 따옴표로 묶으십시오. 내장 된 큰 따옴표를 두 번 올리십시오. 이 당신은 fputcsv()을 확인해야합니다 질문 Dealing with commas in a CSV file

+0

글쎄,이 하나의 언어 특정 있습니다 (나는 그 질문에 대한 선택한 대답을 C 또는 C++로 작성된 것 같아요?). sshow는 다른 질문에서 제공되지 않은 아주 훌륭한 PHP 관련 솔루션을 제공합니다. – Calvin

+0

그래서 "다른 질문에 가깝다"고 말하면서 "가까이에 있지 않기 때문에 - 똑같은 중복이기 때문에"(재미 있긴하지만 그 두 단어는 내 방언에서 다르게 발음됩니다; 첫 번째 단어는 날카로운 치찰음 두 번째는 유성음 z 소리). –

+1

또한 x-ref'd 질문에 대한 대답은이 문제를 해결하거나 제안 된 솔루션의 출력 품질을 평가하는 코드를 생성하는 데 필요한 알고리즘 정보를 제공합니다. –

0

편집 : 나쁘다. 테스트를 마쳤으나 작동하지 않는다. 적어도 Excel에서는 그렇지 않다.

당신은 그러나 다른 뭔가 쉼표를 대체 할 수있는 :

$field = str_replace(',','#COMMA#',$row['Field']); 
$csv_output .= $field.', '; 
0

당신은 같은 다른 구분 기호를 사용할 수 있습니다 "|" 또는 "@"또는 데이터에 표시되지 않을 다른 문자를 포함 할 수 있습니다.

대부분의 CSV 소프트웨어는 쉼표 이외의 다른 것을 구분 기호로 사용하여 "csv"파일을 읽을 수 있습니다.

+0

@는 이메일 주소에 표시 될 것이므로 좋은 예가 아닐 수도 있지만 그 예일뿐입니다. –

10

매우, 매우 가까운 것을

ordinary field,"field with , in it","field with double double quote ("""")" 

참고. 거기에 몇 가지 유용한 코멘트가 있습니다. 지정된 파일 핸들 (개행 종료)는 CSV의 (a 필드 배열로 통과) 광고를 포맷하고 물품()

int fputcsv (resource $handle , array $fields [, string $delimiter = ',' 
    [, string $enclosure = '"' ]]) 

fputcsv.

1

음, 왜 내장 된 mySQL 명령을 사용하지 않으시겠습니까? 내가 뭔가를 놓친 경우, 무시,하지만 난이 가장 빠른 경로라고 생각하십시오

http://www.netreveal.com/ddalton/2006/08/how_to_export_mysql_to_csv.html

웹 사이트가 기본적으로 제안 :

SELECT <fields or *> INTO OUTFILE '/tmp/result.text' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
FROM <table> WHERE <condition> 
0

이 데이터에 쉼표와 따옴표를 유지하는 것이 중요합니다 당신이 그것을 내보낼 때? CSV로 내보내기 전에 항상 데이터를 읽고 나서 수정할 수 있습니다.

내가 일반적으로하는 일은 모두를 큰 따옴표로 묶고 ","(큰 따옴표 쉼표 큰 따옴표) 구분 기호를 조합하는 것입니다. 그렇게하면 임의의 큰 따옴표 나 임의의 쉼표로 인해 비틀 거리는 경우 큰 문제가되지 않습니다.

관련 문제