PHP가 잘못된 CSV 문자를 가져오면 어떻게 해야 합니까?

藏色散人
풀어 주다: 2023-03-17 14:10:01
원래의
1866명이 탐색했습니다.

PHP에서 가져온 잘못된 CSV 문제에 대한 해결 방법: 1. 구문 분석 함수 "function tb_str_getcsv($string, $delimiter=',', $enclosure='"') {...}"를 구성합니다. 2. 읽기 3. "substr($s,2)"를 통해 BOM 헤더를 제거합니다.

PHP가 잘못된 CSV 문자를 가져오면 어떻게 해야 합니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 8.1, Dell G3 컴퓨터

php import csv. 잘못된 코드 문제를 해결하려면 어떻게 해야 하나요?

PHP를 사용하여 Taobao Assistant로 가져온 CSV 파일을 분석하면 특히 Taobao Assistant를 가져올 때 중국어 문자가 깨질 수 있습니다. 데이터 패키지를 인터넷에서 많이 확인했는데 어떤 방법으로도 문제가 해결되지 않습니다.

우선 Taobao Assistant에서 내보낸 csv 파일이 드물게 UTF-16LE로 인코딩되어 있습니다.

두 번째로 csv 파일은 쉼표로 구분되지 않지만 t.Split입니다.

csv 파일 구문 분석 기능은 다음 코드를 통해 구현할 수 있습니다

/**
* 构造一个解析函数
* (php内置的str_getcsv不知为何会出现局部乱码,原因不详)
*/
function tb_str_getcsv($string, $delimiter=',', $enclosure='"') {
$fp = fopen('php://temp/', 'r+');
fputs($fp, $string);
rewind($fp);
while($t = fgetcsv($fp, strlen($string), $delimiter, $enclosure)) {
$r[] = $t;
}
if(count($r) ==1) return current($r);
return $r;
}
$s = file_get_contents($path); //读取文件到变量
$s = iconv('UTF-16LE', 'utf-8', substr($s,2));//转码,substr($s,2)的作用是去掉 BOM 头 FFFE
//有的第三方数据包很不规范,控制符没有用空双引号
//可能导致列数不对应,在此加上空双引号
$s = str_replace("\t\t", "\t\"\"\t", $s);
$s = str_replace("\t\t", "\t\"\"\t", $s);
$csv_data = tb_str_getcsv($s, "\t");//读取到数组
로그인 후 복사

추천 학습: "

PHP 비디오 튜토리얼

"

위 내용은 PHP가 잘못된 CSV 문자를 가져오면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿