Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z formatowaniem wpisów z pliku tekstowego
Forum PHP.pl > Forum > Przedszkole
kdr
Mam następujący problem:
Zamierzałem wykonać skrypt, który odczytując dane z pliku tekstowego banlist.dat (znajdującego sie w tym samym folderze) w których zawarty jest następujący tekst:
Kod
64.34.173.* 85.195.123.22 209.17.190.78 61.61.132.129 209.169.210.91

został zamieniany na listę wyświetlaną w sposób następujący:
Kod
64.34.173.*
85.195.123.22
209.17.190.78
61.61.132.129
209.169.210.91


Zastosowałem taki skrypt:
  1. <?PHP echo"Pokaż listę zbanowanych adresów IP:<p></p>";
  2.  
  3.  
  4. if (file_exists('banlist.dat')) $adres='banlist.dat';
  5. else $adres=array();
  6.  
  7. $base_file=file('banlist.dat');
  8. $base_file=str_replace('
  9. ','<br />',$base_file);
  10. echo($base_file); ?>

lecz wywołuje on następujący wynik:


Kod
Pokaż listę zbanowanych adresów IP:

Array


W czym popełniłem błąd?
Speedy
Przeanalizujmy Twój kod smile.gif

  1. <?PHP echo"Pokaż listę zbanowanych adresów IP:<p></p>";
  2.  
  3.  
  4. if (file_exists('banlist.dat')) $adres='banlist.dat';
  5. else $adres=array();
  6.  
  7. /* sprawdzasz, czy istnieje plik banlist.dat, ale potem tego do niczego nie wykor
    zystujesz, bo i tak dalej się do niego odwołujesz bez żadnego warunku */
  8. /* tworzysz niepotrzebną zmienną $adres, która nie jest do niczego wykorzystywana
     */
  9.  
  10. $base_file=file('banlist.dat'); 
  11.  
  12. /* funkcja file służy do tworzenia tablicy z pliku, gdzie każda linia jest nowym 
    elementem tablicy - szczegóły są w manualu na php.net */
  13. /* w tym przypadku jest to bez sensu, bo masz tylko jedną linię */
  14.  
  15. $base_file=str_replace('
  16. ','<br />',$base_file);
  17.  
  18. /* jeśli chcesz zamienić spację na <br/>, to spację należy określić jako ' ' */
  19.  
  20. echo($base_file);
  21.  
  22. /* jeśli końcowa wartość to string lub int, to możesz użyć echo(). Jeśli będzie to tablica, lepiej użyć print_r() */
  23.  
  24.  ?>


Teraz poprawny skrypt

  1. <?php
  2.  
  3. echo 'Pokaż listę zbanowanych adresów IP:<br/><br/>'.str_replace(" ","<br/>\n", file_get_contents('banlist.dat'));
  4.  
  5. ?>


I po krzyku biggrin.gif.

Skrypt pobiera całą zawartość pliku banlist.dat, a w pobranej zawartości zamienia spacje (" ") na znaczek <br/> oraz enter (\n) i wyświetla je za pomocą funkcji echo.

A jak chcesz sprawdzić, czy plik istnieje, to robisz:

  1. <?php
  2.  
  3. if(file_exists('banlist.dat'))
  4. {
  5.  echo 'Pokaż listę zbanowanych adresów IP:<br/><br/>'.str_replace(" ","<br/>\n", file_get_contents('banlist.dat'));
  6. }
  7. else
  8. {
  9.  echo 'Plik nie istnieje';
  10. }
  11. ?>
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.