Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wczytanie pliku billingu w text
pianta_d
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


Witam

Stanąłem przed problemem wczytania pliku z bilingiem telefonicznym.
Na późniejszym etapie będę wrzucał to do bazy, ale z tym to nie ma żadnego problemu, natomiast nie wiem jak w ogóle się do tego zabrać.
Plik bilingu ma straszną strukturę.

Przykładowy plik bilingu

Takich stron może być kilkanaście. Oddzielone są od siebie liniami ze znaku "-"
W kolumnie połączenie mogą być inne wpisy niż "lokalne" (ale to już nie jest istotne)

Nie będę się rozpisywał co musi być w skrypcie, aby później wczytać to do bazy.
Proszę o wskazówki.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
abort
post
Post #2





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


Potestuj wyrażenia regularne - to skraca kod:

  1. $rozmowy = array ();
  2. $rozm_idx = 0;
  3. print "<pre>\n"; // dla wygody debugowania
  4. $handle=fopen ("billing.txt", "r"); // zakładamy że plik istnieje,więc brak obsługi błędów
  5. while (!feof ($handle)) {
  6. $line = fgets ($handle, 200);
  7. if (preg_match ('@za okres od\s+([0-9.]+)r. do\s+ ([0-9.]+)r.\s+nr linii: ([0-9x\ \(\)]+).*@', $line, $match)) {
  8. $rozmowy['header']['okres_start']=$match[1];
  9. $rozmowy['header']['okres_end']=$match[2];
  10. $rozmowy['header']['phone_number']=$match[3];
  11. }
  12. if (preg_match ('@([0-9 ]{2}.[0-9]{2}){0,1}\s([0-9 ]{2}.[0-9]{2}.[0-9]{2})\s([0-9x\ \(\)]+)\s+(\w+)\s+([0-9 ms]+)\s+([0-9.,]+)\s+([0-9.,]+)@', $line, $match)) {
  13. $rozm_idx++;
  14. if ($match[1] == '') {
  15. $rozmowy[$rozm_idx]['date']=$rozmowy[$rozm_idx-1]['date'];
  16. } else {
  17. $rozmowy[$rozm_idx]['date']= $match[1];
  18. }
  19. $rozmowy[$rozm_idx]['time']= $match[2];
  20. $rozmowy[$rozm_idx]['phone_number']= $match[3];
  21. $rozmowy[$rozm_idx]['call_type']= $match[4];
  22. $rozmowy[$rozm_idx]['call_time']= $match[5];
  23. $rozmowy[$rozm_idx]['netto']= $match[6];
  24. $rozmowy[$rozm_idx]['brutto']= $match[7];
  25. }
  26. }
  27. fclose ($handle);
  28.  
  29. print_r ($rozmowy); // debug :)
  30.  


Starałem się intuicyjnie nazywać zmienne. Potestuj.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 17:14