Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ładowanie wybranej lini pliku.
Forum PHP.pl > Forum > Przedszkole
Coolmax
Jak mógłby wyglądać skrypt na ładowanie (do generowanego kodu html) linijki, linijek tekstu o zmiennej długości. np.

plik file.txt

  1. <B>Kowalski</B> 04/01/2006 17:49<P>to jest komentarz<BR></p>
  2. <B>Nowakowski</B> 05/01/2006 17:49<P>to jest 2 komentarz<BR></p>

i co zrobić aby generowało html, bo nie chce zapisywać do tego pliku, np.

  1. <tr>
  2. <td class="txt"><span align="" style="font-weight: bold;">Kowalski</span></td>
  3. <td align="RIGHT" class="txt">04/01/2006</td>
  4. </tr>
  5. <tr>
  6. <td colspan="2" bgcolor="#990000">
  7. <img src="images/dot.gif" width=1 height=1 alt="." border="0"></td>
  8. </tr>
  9. <tr>
  10. <td colspan="2" class="txt2">to jest komentarz</td>
  11. </tr>
  12. <tr>
  13. <td colspan="2" bgcolor="#ffffff"><img src="images/dot.gif" width=1 height=10 alt="." border="0"></td></tr>
tiraeth
1. Odczytujesz plik (file) do tablicy $lines
2. Przechodzisz przez tablice z liniami foreach'em
3. Wyciągasz sobie odpowiednie dane
4. Wyświetlasz w tym kodzie HTML

  1. <?php
  2. $lines = file('file.txt');
  3. foreach($lines as $line)
  4. {
  5.  preg_match('#<B>(.*?)</B>(.*?)<P>(.*?)</P>#is', $line, $dane);
  6.  
  7.  ?>
  8. <tr>
  9.  <td class="txt"><span align="" style="font-weight: bold;"><? echo $dane[1]; ?></span></td>
  10.  <td align="RIGHT" class="txt"><? echo $dane[2]; ?></td>
  11. </tr>
  12. <tr>
  13.  <td colspan="2" bgcolor="#990000">
  14. <img src="images/dot.gif" width=1 height=1 alt="." border="0"></td>
  15. </tr>
  16. <tr>
  17.  <td colspan="2" class="txt2"><? echo $dane[3]; ?></td>
  18. </tr>
  19. <tr>
  20.  <td colspan="2" bgcolor="#ffffff">
  21. <img src="images/dot.gif" width=1 height=10 alt="." border="0"></td>
  22. </tr> 
  23.  <?
  24. }
  25. ?>
Coolmax
A nie wiesz jak zrobić, aby generowało ten kod? bo np. jak będę miał 50 komentarzy to nie chce za każdym razem "dorabiać kodu html".
tiraeth
No przecież ten kod wyświetla komentarze bez względu na ich ilość... wszystkie komentarze zapisywane są do tablicy i jeżeli jest ich 50 to będzie 50 elementów tablicy, które w pętli foreach wyświetlą się tyle razy ile jest elementów smile.gif
Coolmax
Działa! Tylko chiałbym zapytać się Ciebie, co oznacza
Kod
#<B>(.*?)<\/B>(.*?)<P>(.*?)<\/P>#is', $line
zapewne jest zamieniane na $line. Jeżeli dane[1], 2, 3 to linijki, to dlaczego wystarczą tylko 3 w tym kodzie html?

+
Dane 1,2,3 to te .*? ale gdzie jest jakiś manul (bo na php.net nie ma) opisujący to, bo jeszcze nie kapuję dlaczego musi być "." potem "*" na końcu "?" albo po co "#is". bądź też dlaczego tylko przed drugim <b> i <p> jest znak "\", bez niego też działa.
tiraeth
To jest wyrażenie regularne, na forum jest bardzo dużo przykładów do sprawdzania poprawności stringu (lub pobierania elementów) przy pomocy funkcji preg_* / ereg* smile.gif
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.