Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Rozpoznawanie kolejnych znaków w pliku, Jak zczytywac i rozpoznawac znaki ...
zbyl
post 3.04.2006, 23:01:03
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.04.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Spirit86
post 4.04.2006, 11:41:19
Post #2





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Musisz użyć wyrażeń regularnych.

preg_replace_callback" title="Zobacz w manualu php" target="_manual
preg_replace" title="Zobacz w manualu php" target="_manual


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
zbyl
post 5.04.2006, 00:19:41
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.04.2006

Ostrzeżenie: (0%)
-----


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.

Ten post edytował zbyl 5.04.2006, 00:51:24
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 5.07.2025 - 23:05