Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przeszukiwanie plików frazami z drugiego pliku
Forum PHP.pl > Forum > PHP
adeks
Witam serdecznie, mam pytanie w jaki sposób mogę przeszukac plik "plik.txt" pod względem występowania fraz zawartych w pliku "szukane.txt" Udało mi się uzyskać porządany efekt dla jednej frazy znajdującej się w szukane.txt natomiast w przypadku wiekszej ilosci nie działa. Dane zapisane w pliku szukane.txt są zapisane:

1) FRAZA PIERWSZA
2) FRAZA DRUGA
3) FRAZA TRZECIA


Każda fraza w osobnej linijce.
  1.  
  2.  
  3. $file = file('plik.txt');
  4.  
  5. $plik = fopen('szukane.txt','r');
  6.  
  7.  
  8. $szukaj = fread($plik, 8192);
  9.  
  10.  
  11. for($i = 0; $i <= count($file) - 1; $i++)
  12. {
  13.  
  14. if(strpos($file[$i], $szukaj) != false)
  15. {
  16.  
  17.  
  18. $check = true;
  19. echo 'Dostepny!';
  20. mail('test@o2.pl', "Znaleziona fraza", $szukaj);
  21. }
  22.  
  23. if(!isset($check))
  24. {
  25. //Wyświetlamy komunikat
  26. echo 'Brak wyników do wyświetlenia!';
  27. mail('test@o2.pl', "brak frazy", $szukaj);
  28. }
  29. }
  30.  
  31.  
kreatiff
Sprawdź co zawiera tablica $file. I czy czasem nie są to znaki nowej linii po każdym z wyrazów.
Jeśli są, dodaj flagę FILE_IGNORE_NEW_LINES do file i sprawdź czy skrypt zadziała.

Jeśli szukanie ma ignorować wielkość liter, to lepsze będzie stripos, a jeśli wyrazy zawierają znaki wielobajtowe (np. w UTF-8, w tym nasze ogonki), to mb_strpos/mb_stripos.
adeks
Cytat(kreatiff @ 19.03.2014, 11:21:45 ) *
Sprawdź co zawiera tablica $file. I czy czasem nie są to znaki nowej linii po każdym z wyrazów.
Jeśli są, dodaj flagę FILE_IGNORE_NEW_LINES do file i sprawdź czy skrypt zadziała.

Jeśli szukanie ma ignorować wielkość liter, to lepsze będzie stripos, a jeśli wyrazy zawierają znaki wielobajtowe (np. w UTF-8, w tym nasze ogonki), to mb_strpos/mb_stripos.


Dzięki za odpowiedz, powiem tak, jezeli ustawie paramter szukaj na sztywno ladnie mi wyszukuje ten tekst w moim pliku, natomiast w przypadku wiekszej ilosci w szukane.txt czyli fraz ktorymi chce szukac nie szuka mi wogole nimi, tak jakby niemoglo dopisac do zmiennej szukaj. zrobilem te opcje rowniez z baza danych w tym przypadku szuka mi zawsze ostatnim wierszem z tabeli a nie cala tabela moj kod:
  1. if (mysql_connect($sql_host, $sql_user, $sql_password) and mysql_select_db($sql_baza)) {
  2. $zapytanie = mysql_query('SELECT * FROM hurtownia');
  3. if ($zapytanie) {
  4.  
  5. while ($wynik = mysql_fetch_array($zapytanie)) {
  6.  
  7.  
  8. $szukaj = $wynik['towar'];
  9.  
  10. }
  11.  
  12.  
  13.  
  14. } else {
  15. echo 'Nie można wykonać zapytania!';
  16. }


Oczywiscie wczesniej lacze sie z moja baza danych etc, chcialbym by zmienna $szukaj przypisywala poszczegolne wiersze albo z tabeli sql albo z pliku szukane.txt nie umie sobie z tym poradzic.
nospor
Cytat
zrobilem te opcje rowniez z baza danych w tym przypadku szuka mi zawsze ostatnim wierszem z tabeli a nie cala tabela


No bo w petli nadpisujesz sobie za kazdym razem zmienną $szukaj.....
Zrob w petli szukanie na bieżącą, to bedziesz mial dla kazdej frazy

  1. while ($wynik = mysql_fetch_array($zapytanie)) {
  2. $szukaj = $wynik['towar'];
  3.  
  4. //TUTAJ KOD NA SZUKANIE PO ZMIENNEJ $szukaj
  5. }


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.