Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Konwersja HTML do CSV
Forum PHP.pl > Forum > Przedszkole
Spooky2
Witam. Mam taki problem. Nie moge sobie poradzic z poprawna konwersja htmla do csv. Chodzi dokladnie o wyciag z mBanku, ktory mam w htmlu, a ktory chcialbym zapisac do csv, aby miec pozniej mozliwosc swobodnego czytania i obrabiania zapisanych w nim wartosci. Glowny problem mam z usunieciem spacji i pustych linii ;-( Moze ktos cos robil takiego. Trim nie daje efektu, oniewaz puste linie i tak pozostaja, poza tym, do pliku wyjsciowego trafiaja tez "puste pola" - to znaczy spacje...
Chcialem to zrobic tak,(nie wiem czy dobrze mysle), aby oczyscic ze wszystkich zbednych znakow (tagow htmlowych sie pozbylem) tzn spacji tabulatorow (w wybranych miejscach), i umiescic kazda wartosc w osobnej linii, nastepnie zczytac ja np file i dodawac do kazdej zczytanej wartosci z tablicy znak ',', albo ";". W teorii wygladalo to pieknie, w rzeczywistosci znacznie gorzej... Moze ktos cos podpowie. Dodam, ze szukalem na php.net roznych funkcji - tu chyba czegos bardziej wysublimowanego :-) uzylem fgetss trim...
nexis
Pokaż budowę pliku html i przedstaw jaki CSV chciałbyś z niego otrzymać. Dodatkowo mógłbyś zaprezentować kod PHP, który już masz. Możemy Ci poradzić, ale na pewno nie zrobimy tego za Ciebie.
Spooky2
Hmm, ok, kod pokaze jutro, bo zostawilem go na innym kompie. Struktura jest dosyc prosta... chociaz moze nie do konca, bo gdyby tak bylo, pewnie bym sobie poradzil :-)

No wiec ukulalem cos takiego. Moze i nie jest ladne, ale moje :-) Problem stanowia wg mnie, blizej nieokreslone znaki (spacje?) wystepujace przewaznie na koncu stringow np przy kwotach i dacie...
Nie wiem co to za znaki, poniewaz probowalem wwszystkich oznaczen i nie moge tego wyciac...
Prosze o pomoc.

  1. <?php
  2. uchwyt = @fopen ("print.html", "r");
  3. touch('plik');
  4. $uchwyt2 = fopen('plik', 'w+');
  5.  
  6.  
  7. if($uchwyt) 
  8. {
  9. while (!feof($uchwyt)) 
  10. {
  11. $buffer = fgetss($uchwyt, 9999, "<br>");
  12. if((ereg("[frtvn]{1,}", $buffer) && !ereg("[a-zA-Z0-9]", $buffer)) || ereg("[ ]", $buffer) && !ereg("[a-zA-Z0-9]", $buffer))
  13. {
  14. //echo "nie zaspisuje: ";
  15. //echo $buffer;
  16. //fwrite($uchwyt2, $buffer);
  17. }
  18. else
  19. {
  20.  
  21. if(ereg("[0-9]{2}-[0-9]{2}-[0-9]{4}", $buffer))
  22. {
  23. $buffer = str_replace("<br>", "","", $buffer);
  24. $buffer = strip_tags($buffer);
  25.  
  26.  $tab = split("<br>", $buffer);
  27.  $tab[0] = """.$tab[0]."",";
  28.  $tab[1] = """.$tab[1];  
  29.  
  30.  $linia = $linia."".$tab[0]."".$tab[1];
  31. }
  32. else
  33. {
  34. $buffer = str_replace("<br>", " ", $buffer);
  35. $buffer = strip_tags($buffer);
  36. while(ereg("", $buffer) || ereg("[t]$", $buffer) || ereg(" $", $buffer))
  37.  {
  38. $buffer = trim($buffer, " ");
  39.  }
  40.  if(ereg("PLN", $buffer))
  41.  {
  42. printf("zapisywana linia: %s", $linia);
  43. fwrite($uchwyt2, $linia);
  44. $linia = NULL;
  45.  }
  46.  else
  47.  {
  48. $buffer = """.$buffer."",";
  49.  }
  50.  if(!ereg("PLN", $buffer))
  51.  {
  52. $linia = $linia."".$buffer;
  53.  }
  54. //fwrite($uchwyt2, $buffer);
  55.  }
  56. }
  57. }
  58. }
  59. ?>


Niestety plik wyglada tak

"21-06-2007","21-06-2007
",""PRZELEW ZEWNĘTRZNY PRZYCHODZˇCY EOKS LUKASZ ZAKRZEWICE 36 63-530 BOGUSZYN WLKP 59132000190099041520000398 ABONAMENT Wpłata w UP nr:007196070619AL#70087
","49,00
","102,38
","21-06-2007","21-06-2007
",""PRZELEW ZEWNĘTRZNY PRZYCHODZˇCY WOJTKOWSKI MAREK UL.NOWOMIEJSKA 20 M.7 62-320 KOZMIN 50102041600000290200178145 ABONAMENT
","49,00
","53,38
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.