2017-03-09 5 views
0

데이터 CSV에서 단 하나의 열 아래 같은PHP CSV 가져 오기 데이터하지만 하나 개의 배열에

| BeKwX8iN3wzHDvCaxBD1 | 
| 3rPB9t6EF3RGla28YbLE | 
| OAYRwbrkctcVbrXaaTef | 
| N8lxYdvx47FI7eYt5FUX | 
| zwtRdHr3aYYnX9avcMjX | 
..... 

파일 내용의 모양을 https://drive.google.com/a/hiiir.com/file/d/0B4ZVHStLEPq3bklUUHkzbDN1MkE/view?usp=sharing

코드

$row = 1; 
    if (($handle = fopen($serial['tmp_name'], "r")) !== FALSE) { 
     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
      $num = count($data); 
      echo "<p> $num fields in line $row: <br /></p>\n"; 
      $row++; 
      for ($c=0; $c < $num; $c++) { 
       echo $data[$c] . "<br />\n"; 
      } 
     } 
     fclose($handle); 
    } 

문제는 때 내가 $num을 인쇄 할 때, 그들은 모두 하나의 배열에 있기 때문에 int (1)을가집니다.

array(1) { 
    [0]=> 
    "BeKwX8iN3wzHDvCaxBD1 
    3rPB9t6EF3RGla28YbLE 
    OAYRwbrkctcVbrXaaTef 
    N8lxYdvx47FI7eYt5FUX 
    zwtRdHr3aYYnX9avcMjX"} 

내가 $ 012imiter에 의해 fgetcsv() 제어를 알고 있으며이 경우는 ,이지만이 경우에는 적합하지 않습니다. 20 자까지 구분할 수 있습니까?

+3

이 왜 실제 CSV를 보인다 파일의 각 줄이'| abc | '처럼 보이면'array_map (function ($ a) {return trim ($ a,'| ');}, file ($ se 배열에서 데이터를 얻거나 (도달 행을위한 하나의 엔트리),'fgetcsv()'대신'fgets()'를 사용하십시오. – JustOnUnderMillions

+1

그리고'$ delimiter'를 여러분이 필요로하는 것만 바꾸면됩니다. http://php.net/manual/en/function.fgetcsv.php – JustOnUnderMillions

답변

1

fgetcsv를 사용하여 고정 길이 CSV를 읽을 수는 없으므로 직접해야합니다.

[편집] 여기서 문제는 CSV 문제가 아니며, 줄 끝 "\ r"때문입니다. 아래의 주석을 참조하여 처리하십시오. [/ 편집] 귀하의 경우에는

, 사용 구분 PARAMS는 :

$data = fgetcsv($handle, 1000, "|") 

코드는 exampled :

<?php 

if (($handle = fopen('csv.txt', "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, "|")) !== FALSE) { 
     array_pop($data); 
     array_shift($data); 
     var_dump($data); 
    } 
    fclose($handle); 
} 

결과 :

array(1) { 
    [0]=> 
    string(22) " BeKwX8iN3wzHDvCaxBD1 " 
} 
array(1) { 
    [0]=> 
    string(22) " 3rPB9t6EF3RGla28YbLE " 
} 
array(1) { 
    [0]=> 
    string(22) " OAYRwbrkctcVbrXaaTef " 
} 
array(1) { 
    [0]=> 
    string(22) " N8lxYdvx47FI7eYt5FUX " 
} 
array(1) { 
    [0]=> 
    string(22) " zwtRdHr3aYYnX9avcMjX " 
} 
+0

안녕하세요,'|'여전히 작동하지 않습니다, 소스 파일 형식입니다 문제? –

+1

파일을 다운로드했습니다. Apple의 새 줄 "\ r"입니다. 이것은 여기의 문제입니다. 2 가지 옵션이 있습니다 : 스크립트에서'ini_set ('auto_detect_line_endings', true);'를 사용하거나 전체 파일을 먼저 읽고 \ r을 \ n으로 변환하십시오. 편집 : 셀 구분 기호가','인 경우,'|' – zenko

+0

THX를 잊어 버리십시오! ini_set ('auto_detect_line_endings', true) 작동합니다! –