온라인에서 찾은 일부 CSV 파일에서 제대로 작동하는 CSV 파서를 만들었지 만 Microsoft Excel 2011을 통해 XLS에서 CSV로 변환 한 CSV 파서는 작동하지 않습니다. 작업과 같은 포맷 것들은 :PHP의 CSV 구문 분석 조건
"정렬 순서", "일반 이름", "정식 이름", "유형", "하위 유형", "주권", "자본", "ISO 4217 통화 코드 ","ISO 4217 통화 이름 ","ITU-T 전화 코드 ","ISO 3166-1 2 문자 코드 ","ISO 3166-1 3 문자 코드 ","ISO 3166-1 번호 ","IANA 국가 코드 TLD " "1 ","아프가 니 스탄 ","아프가니스탄 이슬람 국가 ","독립 국가 ","카불 ","AFN ","아프가니스탄 ","+ 93 ","AF ","AFG ","004 ",". af "......................... 등 ...
' 작업은 다음과 같이 형식화됩니다.
주문 번호, 주문 날짜, 반환 된 날짜, 제품 ID, 설명, 주문 이유 코드, 반환 수량, 주문 반환 설명, 발송지 이름 1, 발송지 주소 2, 발송지 주소 3, 발송지 도시, 선박 시 /도, 우편 번호로 발송, 발송, 발송, 이메일 발송, ShipVia 5555555,2013-07-05 13 : 58 : 36.000,2013-08-16 00 : 00 : 00.000,5555-55,0555 - 일부 테스트 것, 환불, 2, jeric 비티, 123 가짜 일 ,,, 버크, NJ, 55055, 미국, 폐기, 테스트 @의 test.com, 슈퍼 빠른 배송
내보낼 엑셀 얻을 어쨌든 거기 첫 번째 형식으로? 파일이 거대하고 수동으로 편집해야 할 부분이 있기 때문에이 작업을 수동으로 수행하는 것을 피하고 싶습니다. "대체 할 수없는 부분"을 수동으로 편집해야합니다. 또 다른 쟁점은 어떤 곳에서는 두 배, 때로는 삼중 콤마가 있다는 것입니다. 이것은 두 파일 모두에 나타나지만. 여기
파서입니다 : 여기에 바퀴를 재발견하려고 할 수도 있지만 나는 긴 산책 설명을주고 싶지 않은 곳 개인적으로 질문을 요청했습니다 불구하고, 주석에서 언급 한 바와 같이function ingest_csv() {
$file_url = 'http://www.path.to/csv/file.csv';
$record_num = 0;
$records = array();
$header = array();
if (($handle = fopen($file_url, "r")) !== FALSE) {
$records['id'] = '';
while (($data = fgetcsv($handle)) !== FALSE) {
$records['id'][$record_num] = '';
$cell_num = 0;
foreach ($data as $cell) {
if($record_num == 0) {
$header = $data;
} else {
$current_key = $header[$cell_num];
$records['id'][$record_num][$current_key] = $cell;
}
$cell_num++;
}
$record_num++;
}
fclose($handle);
}
else {
echo 'could not open file.';
}
return array($record_num, $records);
}
function batch_csv() {
list($num_rows, $rows) = ingest_csv
print_r($num_rows);
print_r($rows);
}
자신의 CSV 파서를 쓰기 왜? PHP에는 [fgetcsv()] (http://php.net/fgetcsv) 및 [fputcsv()] (http://php.net/fputcsv)가 있습니다. 맹 글링 된 입력을 수용하려고 시도하는 것보다 파서를 해킹하려고 시도하는 대신 올바른 csv를 생성하도록 XSL을 수정해야합니다. –
'fgetcsv()'의 함수 인자를 살펴보면 각 형식의 인자를 조정하기 만하면됩니다. –
@MarcB 당신이 제안한 것이 어떻게해야하는지 묻고있는 것처럼 질문을 이해하지 못한 것 같습니다. 내 PHP를 수정하려고하지 않고 내 XSL 만 사용했습니다. > "첫 번째 포맷으로 내보내기가 능숙합니까?" – CR47