Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Parsowanie stringa do tabeli/dl
Forum PHP.pl > Forum > Przedszkole
colachips
Witam,

mam taki string
  1. $s = 'Powierzchnia użytkowa: 57.80 m?
  2. Powierzchnia netto: 57.80 m?
  3. Powierzchnia całkowita: 70.20 m?
  4. Powierzchnia zabudowy: 70.20 m?
  5. Kubatura: 299.90 m?
  6. Wysokość budynku: 5.10 m
  7. Szerokość budynku: 6.50 m
  8. Długość budynku: 10.70 m
  9. Min. wymiary działki: 14.57 x 17.74
  10. Kąt nachylenia dachu: 30 °';


Chciałbym teraz go przeparsować aby mieć coś takiego (ew. dl dd dt)
  1. <table>
  2. <tr>
  3. <td>Powierzchnia użytkowa</td>
  4. <td>57.80 m2</td>
  5. </tr>
  6. <tr>
  7. <td>Powierzchnia netto</td>
  8. <td>57.80 m2</td>
  9. </tr>
  10. ... itd.
  11. </table>


Chodzi o to, że mniej więcej mam blade pojecie jak to w teorii powinno wyglądać:
1. Należy w pętli przelecieć każdą linijkę stringa ( znaleźć "\n" ) - i tutaj właśnie leżę, bo nie wiem jak to osiągnąć *
2. Należy rozdzielić linię na dwie części, można wykorzystać znak ":", który rozdziela string w wymaganym miejscu za pomocją funkcji strstr()

* moje wypociny to coś takiego, ale to nie działa jak należy i nie wiem dlaczego:
  1. $offset = 0;
  2. while($offset < strlen($s)-$offset)
  3. {
  4. echo $offset.' - '.strpos($s, PHP_EOL, $offset).' | ';
  5. echo substr($s, $offset, strpos($s, PHP_EOL, $offset) ).'<br />';
  6. $offset =+ strpos($s, PHP_EOL, $offset) + 1;
  7. }


Niestety coś czynię źle ponieważ wynik jest niesatysfakcjonujący, co gorsza nie wiem jak to interpretować... sad.gif Takie coś się pokazuje:
Kod
0 - 33 | Powierzchnia użytkowa: 57.80 m?
34 - 64 | Powierzchnia netto: 57.80 m? Powierzchnia całkowita: 70.20 m
65 - 100 | Powierzchnia całkowita: 70.20 m? Powierzchnia zabudowy: 70.20 m? Kubatura: 299.90 m? Wysoko?
101 - 134 | Powierzchnia zabudowy: 70.20 m? Kubatura: 299.90 m? Wysokość budynku: 5.10 m Szerokość budynku: 6.50 m Długość budynku:
135 - 156 | Kubatura: 299.90 m? Wysokość budynku: 5.10 m Szerokość budynku: 6.50 m Długość budynku: 10.70 m Min. wymiary działki: 14.57 x 17.74 Kąt nach


A więc tylko pierwszą linię dobrze "łamie", w następnych wszystko się sypie.

Pozdr.
Crozin
Możesz skorzystać z gotowego explode, zamiast rozdzielać to ręcznie.

PS. Zanim zaczniesz rozdzielać po znaku nowej linii, upewnij się, że nie będziesz miał problemu z różnym sposobem prezentowania tego "znaku" przez różne systemy operacyjne.
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.