Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Przeszukiwanie plików tekstowych
Forum PHP.pl > Forum > PHP
ortiz
Nie wiem czy to mozliwe ale sie zapytam Mam Skryp ogłoszeń oparty na plikach tekstowych i chciałbym zrobić przeszukiwanie tych plików. Lecz jest jeden zasadniczy problem kazda kategoria to osobny plik tekstowy i nie wiem jak zrobić by wysukiwarka wzieła pod uwage wszystkie pliki tekstowe. Myslałem żeby zrobić odwołanie do katalogu gdzie się te pliki znajdują ale mi nie wychodzi prosze o pomoc.
mike
Cytat(ortiz @ 2006-02-27 00:03:18)
(...) ale mi nie wychodzi prosze o pomoc.

Pokaż kod. Na pewno uzyskasz pomoc ze strony użytkowników forum.
ortiz
sorki zapomniałem winksmiley.jpg

  1. <?php
  2. $dirName = 'twojkatalog/';
  3.  
  4. $dir = opendir($dirName);
  5. while($f = readdir($dir))
  6. {
  7. if(!is_dir($dirName.$f))
  8. {
  9.  przeszukajTxt($dirName.$f);
  10.  }
  11. }
  12. closedir($dir);
  13. ?>


coś takiego mam już smile.gif
dtb
  1. <?php
  2. $szukanyTekst = 'rotfl';
  3. $dirName = 'twojkatalog/';
  4.  
  5. function przeszukajTxt($file)
  6. {
  7. global $szukanyTekst;
  8. if (strpos(file_get_contents($file), $szukanyTekst) !== false) {
  9. echo 'Znaleziono w pliku: '.$file;
  10. }
  11. }
  12.  
  13. $dir = opendir($dirName);
  14. while($f = readdir($dir))
  15. {
  16. if(!is_dir($dirName.$f))
  17. {
  18.  przeszukajTxt($dirName.$f);
  19.  }
  20. }
  21. closedir($dir);
  22. ?>
ortiz
dtb dzieki za podopowiedz ale mam jeszcze mały problemik
otóż Twój kod jeszcze troszeczke z modyfikowałem
  1. <?php
  2. $szukanyTekst = 'szukany tekst';
  3. $dirName = 'katalog do przeszukania';
  4.  
  5. function przeszukajTxt($file)
  6. {
  7.   global $szukanyTekst;
  8.   if (strpos(file_get_contents($file), $szukanyTekst) !== false) {
  9.     echo "<p align='left'><a href='link".$file." 'target='_blank'''>".$szukanyTekst."</a><br>";
  10.   }
  11. }
  12. $dir = opendir($dirName);
  13. while($f = readdir($dir))
  14. {
  15.   if(!is_dir($dirName.$f))
  16.   {
  17.      przeszukajTxt($dirName.$f);
  18.    }
  19. }
  20. closedir($dir);
  21. ?>

i sprawa jest tego Typu dodałem że jak wyszuka to jest link do tego pliku bo jeden plik to jest jedno ogłoszenie i skryp przetwaza go i wyswietla lecz katalog z plikami i skryptem nie są takie same i w linku jest ta róznica wychwytywana :/ i nie wiem jak sie jej pozbyć :/

Przenoszę na php
---
nospor


Pomorze Ktoś questionmark.gif
splatch
Myślę, że tutaj idealnie nadaje się funkcja fscanf
ortiz
tak tylko jak ją zastosowac??
Ktoś poradził mi bym do przeszukajTxt() dodał drugi parametr, w którym prześle samą nazwę pliku. Tylko nie wiem jak to zrobić questionmark.gif
kobiórzanin
to ja mam jeszcze jedno pytanie:
jak zrobić żeby oprócz tego że podaje ścieżkę do katalogu w którym znajduja się wyszukana fraza, podawał numer linii w pliku w którym znalazł daną frazę?
templar
dlaczego stosujesz tak usilnie strpos() w funkcji przeszukujacej tekst? wez pod uwage, ze nei uwzglednia ona roznic male/wielkie znaki, a stripos() nie zawsze dziala, w zaleznosci od tego co masz na serwerze. nie lepszy ereg() ?

pzdr
dadexix
Cytat
ze nei uwzglednia ona roznic male/wielkie znaki
w takich pracach lepiej aby nie widziało różnic mała/DUŻA
Cytat
nie lepszy ereg() ?
to jest do wyrażeń regularnych i jest wolniejsze z tego powodu

edit:
nie dość że do wyrażeń regularnych to jeszcze nie PERLowych(które są popularniejsze i lepsze) tylko jakiś POSIX a w dodatku jest wolniejsze od tych PERL'owych

Cytat
Notatka: preg_match(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to ereg().
cicik
To ja zadam (być może głupie) pytanie autorowi wątku.
Sam niejeden sklep dawno temu napisałem na plikach tekstowych (kiedy baza danych była luksusem dla bogatych) ale po co dzisiaj używać plików tekstowych zamiast bazy danych?
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.