.adi ADIF parser 하고자 합니다. 정규식으로 어떻게 해야 할까요? 채택완료
안녕하세요. .adi ADIF 형식의 파일을 읽어들여서 parser 하고자 합니다. api 오픈소스 찾아 봤지만 잘 안되어서 올려봅니다.
test.adi 파일이 있다면 내용이 아래처럼 나옵니다.
... (계속된 데이터)
위와 같이 파일 내용이 쭉 들어가 있으면
이걸 정규식 등을 이용 parser 해서 DB에 데이터만 저장하고자 합니다.
즉 파일읽어들임 파일 내용 전체 변수 예로 $adidata 에 저장하고 1줄 1줄 읽어들여서 전체를 다 DB로 저장하고자 합니다. 즉 한줄 정규식 등으로 파싱해서 DB저장 반복 하고자 합니다. 위 데이터 전체를 돌면서, 정규식 파싱하는 방법 어떻게 하면 좋을까요?
정규식이나 sscanf 등으로도 가능할까요? $adifdata=$datafile; while (전체 row 만큼) { 내용 parser db저장 }
귀한 답변 부탁드립니다.
답변 4개
답변에 대한 댓글 7개
그리고 저도 ham에 관심이 있는데 이런 소스는 어디서 받아 오는 건가요?
include 'adif_parser.php';
$p = new ADIF_Parser;
$p->load_from_file("ds5eps.adif");
$p->initialize();
while($record = $p->get_record())
{
if(count($record) == 0)
{
break;
};
echo $record["call"]."<br>";
echo $record["TIME_ON"]."<br>";
};
?>
print_r( $record);
이렇게 해서 각 record가 어떻게 생겼는지 한번 살펴 보세요.
parser 가 정확히 안되네요 흠..
http://hanlogbook.com 에 적용할 예정입니다.
댓글을 작성하려면 로그인이 필요합니다.
https://github.com/magicbug/phpadifparser" rel="nofollow noreferrer noopener" target="_blank">https://github.com/magicbug/phpadifparser
여기 class에서 다음을 수정하세요.
while($len > 0) { $value = $value.$record[$a]; $len--; $a++; }$a--; /* $a--; 이것을 추가하세요. */
답변에 대한 댓글 6개
파싱해 보니 항목은 다 나오는데
<QSO_DATE:8>20220109<STATION_CALLSIGN:6>DS5EEE<OPERATOR:6>DS5XXX<TIME_ON:4>1518<CALL:5>HL5LAL<MODE:3>INT<FREQ:5>45029<COMMENT:10>주례 보훈병원 아이볼<EOR>
=> parser 후
20220109 / DS5EEE / DS5XXX / 1518 / HL5LAL / INT / 45029/ / / / / / / 주례 보
한글 comment가 짤려버립니다.. ㅠ.ㅠ
어떻게 해야 할까요?
한글이 있는 경우는 또 수정해야 할 듯하군요.
댓글을 작성하려면 로그인이 필요합니다.
:8
이것이 데이터(값)길이군요.
substr()로 자르고, 숫자 추출해서 다음(값)부분 자르고 하면 금방되겠네요.
답변에 대한 댓글 3개
제가 올려드린 아래 데이터를 기준으로 어떻게 구현해야할까요?
2 ROW인데요... 흠... 감이 안와서요...
<QSO_DATE:8>20220109<STATION_CALLSIGN:6>TEST11<OPERATOR:6>TEST11<TIME_ON:4>2228<CALL:6>TEST22<MODE:3>INT<FREQ:5>45029<COMMENT:9>테스트<EOR>
<QSO_DATE:8>20220109<STATION_CALLSIGN:6>TEST11<OPERATOR:6>TEST11<TIME_ON:4>2305<CALL:6>TEST22<MODE:3>INT<FREQ:5>45030<EOR>
$qso_date=substr( $line, 12, 8);
댓글을 작성하려면 로그인이 필요합니다.
여기서 그냥 날짜만 뽑는 거라면
그냥 substring() 하시는 것이 편할 듯합니다.
답변에 대한 댓글 3개
항목은 가변적으로 다를 수 있고 형식은 <$str:$length>$data 형식이 됩니다.
이런 형식을 parser 하는걸 만들고 싶습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인