Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rozpoznawanie kolejnych znaków w pliku
Forum PHP.pl > Forum > PHP
zbyl
Witam mam pytanko.
Hmm wiec zaczne od poczatku. Chcę zrobić taki automat żeby dodawał dane które znajdą się w plikach txt w danym katalogu do bazy danych SQL.

Chodzi mi o rozpoznawanie poszczególnych zmiennych.

Mam plik costamcostam.txt i w nim przykladowe dane, ciąg znaków:

N5004023E01956555+00160015N0056E0000U0000_V0,T6

każda zmienna jest dodawana w następujący sposób:

  1. <?php
  2. // Tworzenie tablicy z danych zawartych w pliku:
  3. function make_data_array($files, $index) {
  4.  
  5. // Wczytanie do tablicy zawartosci pliku:
  6. $content = file($files[$index]);
  7.  
  8.  // Tylko pierwsza linia pliku znaczaca, przepisanie do łańcucha:
  9. $position_string = $content[0];  
  10.  
  11. // Utworzenie tablicy z odpowiednimi danymi:
  12. $gps_data['znak_szerokosci'] = substr($position_string, 0, 1); // Wytnij znak szerokości goeogrficznej
  13. $gps_data['szerokosc_stopnie'] = substr($position_string, 1, 2); // Wytnij szerokosc geograficzna
  14.  $szerokosc_minuty1 = substr($position_string, 3, 2); // Wytnij część całkowitą prędkości pionowej
  15.  $szerokosc_minuty2 = substr($position_string, 5, 3); // Wytnij część ułamkową prędkości pionowej
  16. $gps_data['szerokosc_minuty'] = ("$szerokosc_minuty1.$szerokosc_minuty2"); // Wytnij szerokosc geograficzna
  17. $gps_data['znak_dlugosci'] = substr($position_string, 8, 1); // Wytnij znak dlugosci goeogrficznej
  18. $gps_data['dlugosc_stopnie'] = substr($position_string, 10, 2); // Wytnij dlugosci geograficzna
  19.  $dlugosc_minuty1 = substr($position_string, 12, 2); // Wytnij część całkowitą prędkości pionowej
  20.  $dlugosc_minuty2 = substr($position_string, 14, 3); // Wytnij część ułamkową prędkości pionowej
  21. $gps_data['dlugosc_minuty'] = ("$dlugosc_minuty1.$dlugosc_minuty2"); // Wytnij dlugosci geograficzna
  22. $gps_data['znak_wysokosci'] = substr($position_string, 17, 1); // Wytnij znak wysokosci n.p.m.
  23. $gps_data['wysokosc'] = substr($position_string, 18, 5); // Wytnij wysokosc n.p.m.
  24.  
  25. // Zwracamy wygenerowana tablice:
  26. return $gps_data;
  27.  
  28. ?>


Tylko robi on to dobrze dopoki dane są zamieszczane po koleji w plikach. Jeśli natomiast zamienimy dane miejscami to nie trudno się domyślić że wyjdą bzdury. Można zrobić tak żeby wycinał po koleji po jednym znaku rozpoznawal i później wycinal - tylko cos mi weny brakuje.

Ma ktoś pojęcie jak zrobić przykładowo,żeby automatycznie rozpoznawał np: literkę N i po tej literce wycinał 7 znaków. dry.gif
zbyl
TO by nawet było ok. Tylko. Jak zrobić zeby rozpoznał 2 znaki i wyciął między nimi znaki (liczby nawiasem mówiąc)questionmark.gif

przykład na preg_replace:

  1. <?php
  2.  
  3. $liczba = 'To jest liczba 194, to jest liczba 10, to jest liczba 1025516';
  4. $tekst = preg_replace( '/\d+/', '<b>\\0</b>', $liczba );
  5. var_dump( $tekst );
  6. // Wynik:
  7. // To jest liczba <b>194</b>, to jest liczba <b>10</b>, to jest liczba <b>1025516</b>
  8. ?>


przykład na preg_replace_callback:

  1. <?php
  2.  
  3. $tekst = "Zmień datę! Data 04/01/2002\n";
  4. $tekst.= "druga data 12/24/2001\n";
  5.  
  6. function pl_date( $zmien ) {
  7. return $zmien[2].'.'.$zmien[1].'.'.$zmien[3];
  8. }
  9.  
  10. echo preg_replace_callback("|(\d{2})/(\d{2})/(\d{4})|",
  11. "pl_date", $tekst);
  12. // Wynik:
  13. // Zmień datę! Data 01.04.2002 druga data 24.12.2001
  14.  
  15. ?>


może ktoś pomóc?? worriedsmiley.gif Bo patrzyłem na te wyrażenia regularne ale za chiny nie moge tych krzaków opanować wacko.gif albo przynajmniej jakiś opis co i jak sie wpisuje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.