2010-08-05 4 views
1
$lineArray = preg_split('/\t\s*(?=([^"]*"[^"]*")*[^"]*$)/', $line); 

위의 코드 조각은 탭이 큰 따옴표 안에없는 탭 구분 파일을 분할하는 데 사용됩니다. 이중 탭 (누락 된 필드)이있는 경우를 제외하고는 제대로 작동합니다. 기본적으로 PHP는 두 개가있을 때 단 하나의 탭을 봅니다. 탭 너비 옵션이 있습니까?PHP에서 탭으로 구분 된 파일에서 이중 탭 처리

+2

[목적을 위해 만들어진 도구] (http://php.net/fgetcsv)가 아닌 정규 표현식에 대한 이유가 있습니까? – salathe

+0

거기에 \ s *이있는 이유는 무엇입니까? 그것은 탭을 포함합니다 ... 그리고 당신은'str_getcsv' /'fgetcsv'를 사용할 수없는 이유는 무엇입니까? – Wrikken

+0

실제로는 완전한 CSV가 아니며 논리에 더 많은 정보가 포함되어 있지만 올바르게 분할하지 않기로했습니다. – Mohammad

답변

1

\ s도 탭과 일치하므로 분명히 원하지 않습니다.

$lineArray = preg_split('/\t[ \r\n]*(?=([^"]*"[^"]*")*[^"]*$)/', $line); 

은 비 탭 공백 만 일치시켜야합니다.

관련 문제