내가 아는 한/찾을 수있는 두 가지 방법이 있습니다.PHP에서 일반 텍스트 파일을 구문 분석하는 방법
- 상태 머신
- (
Best way to parse a dynamic text list in PHP에 따라) 당신을 기반으로 레코드 (레코드 당 한 줄) 특정 규칙에 텍스트 파일을 감안할 때 줄 바꿈explode("\n", $data)
에 폭발. 1에서 2까지의 문자는 yy 형식의 연도를 제공합니다. 3에서 4까지의 문자는 mm 형식으로 나타납니다. charachters 70에서 72는 x 매개 변수를 제공합니다.
CSV의 경우 우리는 str_getcsv()
이지만 텍스트 파일에는 그런 것이 없다고 생각합니다.
내 개인적인 취향은 간단한 개행 옵션입니다. 생각?
텍스트 파일은 다음과 같다 : 각 레코드/라인
14 5 12466 3202313 710101010 31 7 9 5 3 4 4 4 4 50.21
14 5 22466 41317 7 7 7 3 3 7 19 5 6 3 3 3 2 2 3 30.10
14 5 32466 5 7 7 3 7 3172727 29 3 3 2 3 2 6 12 12 50.21
14 5 42466 62337332330231713 60 9 22 18 9 15 9 6 5 120.73
14 5 52466 71327202020202320 49 5 12 7 7 7 7 9 7 80.42
14 5 62466 8 3 7 7 7 3 3 3 3 11 2 3 3 3 2 2 2 2 20.00
14 5 72466 9 0 0 0 310 3 720 13 0 0 0 2 4 2 3 7 20.00
14 5 82466102333334320333037 76 9 18 18 32 7 18 15 22 170.94
14 5 924661130172017 7 3 010 31 15 6 7 6 3 2 0 4 50.21
14 51024661220301310 7 32327 40 7 15 5 4 3 2 9 12 70.42
14 5112466134330172713172027 58 32 15 6 12 5 6 7 12 120.73
14 5122466142320202320101717 45 9 7 7 9 7 4 6 6 70.31
14 51324661510131310 7 7 720 26 4 5 5 4 3 3 3 7 40.10
14 5142466161710 3 72317 717 30 6 4 2 3 9 6 3 6 50.21
14 51524661710101313 7101313 27 4 4 5 5 3 4 5 5 40.21
14 5162466181713101020201710 35 6 5 4 4 7 7 6 4 50.21
14 51724661913 7 3 7 3 3 3 3 13 5 3 2 3 2 2 2 2 30.00
14 518246620171310 717201013 32 6 5 4 3 6 7 4 5 50.21
14 5192466211013101013131020 30 4 5 4 4 5 5 4 7 50.21
14 520246622 7 7101010 7 3 3 17 3 3 4 4 4 3 2 2 30.10
14 521246623 7 3 3 3 0 3 3 7 9 3 2 2 2 0 2 2 3 20.00
14 5222466241010109999999999 4 4 4
몇 가지 규칙 :
1- 2 i2 yy, last two digits of year
3- 4 i2 mm, month (1-12)
5- 6 i2 dd, day of month (1-31)
7-10 i4 Bartels solar rotation number - a sequence of 27-day
intervals counted continuously from February 8, 1832
11-12 i2 Number of day within the Bartels 27-day cycle
13-28 8i2 3-hourly Kp indices (0-3, 3-6, 6-9, 9-12, 12-15,
15-18, 18-21, 21-24 UT)
29-31 i3 Daily Kp sum, expressed to the nearest third of a unit
(supplied only for tradition, use Ap scientific
purposes!)
32-55 8i3 3-hourly ap indices (0-3, 3-6, 6-9, 9-12, 12-15,
15-18, 18-21, 21-24 UT)
56-58 i3 Ap equivalent daily amplitude -
귀하의 데이터가 귀하가 제안하는 것과 같이 규칙적이라면 정규 표현식을 사용해도 문제가 없을 것입니다. 편집 : 이제 정규식으로 간다 일부 샘플 데이터를 추가했습니다. –
정규식이 필요 없습니다. 공간을 폭발 시키면 필요한 모든 필드가 있습니다. – Ikke
fgetcsv()와 같은 함수를 사용하여 단락 문자를 단일 공백 또는 '\ t'탭으로 바꿀 수 있습니다 –