![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 10.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Potrzebuję dostać się do danych zapisanych w pliku z rozszerzeniem bif. Jest to plik graficzny zapisywany przez kamerę urządzenia rejestrującego typu fotoradar niemieckiego producenta Robot Visual Systems GmBH z utrwalonym wykroczeniem, a zawierający m.in. takie dane jak data i czas zdarzenia, prędkość, lokalizacja itd. Edytując ten plik np. w notatniku na jego końcu znajdują się pewne znaczniki wraz z przypisanymi wartościami m.in.: CAM_SHU1=0004 CAM_GAI1=0220 CAM_OFF1=0000 CAM_SYSN=ROBOT Digital 5.0 DIS_LOOP=02500 FIL_NUMB=0000090 FRA_INDE=A FRA_NUMB=120 INC_DATE=190213 INC_TIME=131555 INC_INDE=0 INC_LANE=1 INC_SPEE=061 INC_LIMI=050 INC_MLIM=061 INC_CVEH=0 IMG_NUMB=00000239 Jak mogę odczytać z tego pliku wartości przypisane do poszczególnych znaczników ?. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli ilość tych znaczników jest stała to znajdujesz sobie pierwszy np: CAM_SHU1=0004
Wypie... usuwasz wszystko przed nim i jedziesz preg_match w tablcy zapisując kolejne wyrażenia opisujące znacznik. Ew. prościej robisz explode każdej linijki po = oczywiście po wyczyszczeniu pozostałych danych |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 10.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli ilość tych znaczników jest stała to znajdujesz sobie pierwszy np: CAM_SHU1=0004 Wypie... usuwasz wszystko przed nim i jedziesz preg_match w tablcy zapisując kolejne wyrażenia opisujące znacznik. Ew. prościej robisz explode każdej linijki po = oczywiście po wyczyszczeniu pozostałych danych Ok - mam taki oto kod, który wyszukuje dany znacznik w pliku:
Powyższy kod działa ale chciałbym umieścić kilka znaczników w tablicy i wyszukać je wszystkie w pliku, a następnie wylistować wraz z wartościami. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czy te znaczniki są na samym końcu?
Jeżeli tak to robisz stripos np CAM_SHU1 i wywalasz wsio przed. Potem explode po \n (lub co tam jest) a następnie w foreach wyniku exploda robisz kolejne explode po = |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 10.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Coś w ten deseń. Pisane na szybko.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 10.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Coś w ten deseń. Pisane na szybko.
Coś mi to nie śmiga ale może tak:
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
nie śmiga bo?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 10.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
nie śmiga bo? OK - poniżej rozwiązanie mojego problemu z wykorzystaniem znaczników umieszczonych w tablicy:
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 22 Dołączył: 14.12.2007 Skąd: Wyszków Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie, to te znaczniki są zapisane na pewno po pewnym ciągu bajtów (albo i pojedyńczego szczególnego bajtu). Dlatego wydaje mi się, że rozsądniejsze byłoby wyszukanie tego właśnie "markera". Wrzuć proszę przykładowy plik. Postaram się to ogarnąć.
Dopiero później można byłoby się zająć sparsowaniem tych zmiennych. Zrobiłbym to za pomocą regexpów: Kod /([^=]+)=(.*)/ Przykład:
Ten post edytował Kofel 23.09.2013, 11:10:20 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 10.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie, to te znaczniki są zapisane na pewno po pewnym ciągu bajtów (albo i pojedyńczego szczególnego bajtu). Dlatego wydaje mi się, że rozsądniejsze byłoby wyszukanie tego właśnie "markera". Wrzuć proszę przykładowy plik. Postaram się to ogarnąć. Dopiero później można byłoby się zająć sparsowaniem tych zmiennych. Zrobiłbym to za pomocą regexpów: Kod /([^=]+)=(.*)/ Przykład:
Poniżej link do pliku: Link do pliku *.bif |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 22 Dołączył: 14.12.2007 Skąd: Wyszków Ostrzeżenie: (0%) ![]() ![]() |
Dla porównania prosiłbym o drugi plik
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 10.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
hettmix przecież to co Ci dałem śmiga i działa jak powinno
dla pliku drugiego: Kod array (size=21)
'CAM_SHU1' => string '0004' (length=4) 'CAM_GAI1' => string '0120' (length=4) 'CAM_OFF1' => string '0001' (length=4) 'CAM_SYSN' => string 'M2.0' (length=4) 'FIL_NUMB' => string '0000373' (length=7) 'FRA_INDE' => string '0' (length=1) 'FRA_NUMB' => string '001' (length=3) 'INC_DATE' => string '040111' (length=6) 'INC_TIME' => string '114434' (length=6) 'INC_INDE' => string '0' (length=1) 'INC_DIRE' => string 'v' (length=1) 'INC_LANE' => string '0' (length=1) 'INC_SPEE' => string 'CHK' (length=3) 'INC_LIMI' => string '050' (length=3) 'INC_MLIM' => string '000' (length=3) 'INC_CVEH' => string '0' (length=1) 'IMG_NUMB' => string '00000001' (length=8) 'IMG_DATI' => string '04.01.2011 11:44:34.231' (length=23) 'LOC_LI_P' => string '050' (length=3) 'LOC_LI_L' => string '050' (length=3) 'LOC_TEX0' => string '11' (length=2) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.09.2025 - 10:15 |