2013-06-03 2 views
1

geonames.org에서 CSV 파일을 처리하고 있으므로 인클로저없이 CSV 파일을 가져와야합니다.인클로저 문자가없는 경우 어떻게 fgetcsv를 사용할 수 있습니까?

현재 fgetcsv()$enclosure 매개 변수에 대해 단일 문자를 제공하고 그렇지 않은 경우 CSV 데이터를 처리하지 않아야합니다.

PHP 네이티브 기능을 사용하여 인클로저 문자가없는 CSV 데이터를 어떻게 검색합니까?

+0

그냥 읽고 선 다음 원하는 형식 – MKroeders

답변

2

언급 한 것처럼 가장 쉬운 방법은 fgetcsv()를 전혀 사용하지 않는 것입니다. 당신은 방금 CSV에서 각 행을 읽을 수있는 일반 fgets() 함수를 사용하여 다음 줄에 모든 다른 필드의 배열을 만들 수 explode()를 사용할 수

여기에 작은 예입니다 :

$handle = fopen("foo.csv", "r"); 

$i = 1; // for test output 

while (($buffer = fgets($handle)) !== false) { 
    $fields = explode(";", $buffer); // assuming that fields are separated with semicolons 

    $j = 1; 

    // Test output 
    echo "Line $i: "; 
    // This is just for show, you can use a regular for loop instead 
    foreach ($fields as $field) { 
     echo "Field $j: $field"; 
     $j++; 
    } 

    echo "\n"; 
    $i++; 
} 

fclose($handle); 
+1

이에 데이터를 직접 분석하고 결과가 나올 수있다 csv 데이터에서 세미콜론이 사용되는 조작 된 문자열입니다. 그것은 대부분의 상황을위한 실행 가능한 솔루션입니다. – Josiah

5
가 당신은 인클로저로 이상한 문자를 사용할 수 있습니다 가능한 해결 방법으로

: fgetcsv에서 제공하는 탈출 기능을 고려하지 않는 라인

// Read TSV line using 'backspace' as the enclosure character 
fgetcsv($stream, 0, "\t", chr(8)); 
+1

함수 이름 "char"의 오타는 "chr"이어야합니다. –

관련 문제