2011-09-29 5 views
2

내 작업을 수행 할 필요가 없습니다. 올바른 방향으로 안내해주세요. 나는 PHP에 익숙하지 않고 생각할 수 있다고 생각하는데, 이것에 대한 올바른 방향을 지적 할 필요가 있습니다.CSV 파일 나누기 및 배열 다시 만들기

나는 비즈니스 정보 (회사 주소, 도시, 이메일 등) 기록의 일부는 이메일 필드에 하나 개 이상의 전자 메일 주소가

있는 CSV 파일이 있습니다. 각 값은 세미콜론 (;)으로 구분됩니다.

원하는 작업은 하나의 이메일 레코드가있는 각 행으로 끝납니다. 원래 행에 3 개의 이메일 주소가있는 경우, 완료되면 이메일 주소 중 하나와 함께 각각 3 개의 행이 필요합니다.

대부분의 레코드에는 전자 메일 주소가 하나 있지만 일부 전자 메일 주소는 12 개입니다.

여기에 데이터 정상적인 문제가 있다는 것을 알고 있지만 다른 응용 프로그램을 제공하는 변환 유틸리티를 구축 중입니다.

다시 말하지만 최종 코드는 찾고 있지 않습니다.) 나는 올바른 방향으로 향하게하려고합니다.

감사합니다 ... Jeff

답변

1

여기가 팁입니다. 당신은 CSV (회사, 주소, 도시, 이메일 등)를 가지고 있습니다. 그리고 당신은 다른 문자, 세미콜론으로 구분 된 여러 개의 이메일을 가지고있다. 그런 다음 필드 주소가이 전자 메일과 같은 "세미콜론"으로 구분 된 값 (CSV이지만 a 대신 a를 사용)이라고 생각할 수 있습니다. (전자 메일 1, 전자 메일 2, 전자 메일 3 등)

도움이 더 필요하면

3

처음에는 fgetcsv()을 사용하여 파일을 읽으십시오. 이 줘야 해가 aotomatically 행과 열 PLIT : 당신은 느릅 나무 필드를 알고있는 이메일 필드입니다

while (($data = fgetcsv($handle, 1000, ","))) { 
    // do something 
} 

을 (느릅 나무가 목록에 따라 필드 3을해야한다 (3하지 4 $data 때문에는 0부터 시작하는 배열입니다)). 그냥 루프 둥지가, 그 이후

$emails = explode(";", $data[3]); 

: 메일-adresses를 분할 explode()을 사용하여 내가 그것을 알 수있는 바와 같이

while (($data = fgetcsv($handle, 1000, ","))) { 
    $company = $data[0]; 
    $address = $data[1]; 
    $city = $data[2]; 
    $emails = explode(" ", $data[3]); 
    foreach($emails as $email){ 
     // do something with $company, $address, $email... 
    } 
} 
+0

, CSV 파일의 행은 회사 이름과 같은 것 , address, city, email1; email2 그런 경우 첫 번째 explode() 함수의 첫 번째 매개 변수는 ";"이어야합니다. –

+0

감사합니다. 전혀 시간이 없어. 꿈처럼 작동합니다. – user969841

+0

@ tomtheman5 : 힌트를 주셔서 감사합니다. 단지 오타 였고 지금 바로 수정되었습니다. – oezi