Skrypt sprawdzający czy podane słowo znajduje się w pliku

Tutaj dyskutujemy o PHP oraz zgłaszamy i rozwiązujemy problemy dotyczące tego języka.

Skrypt sprawdzający czy podane słowo znajduje się w pliku

Postprzez asia89 » sobota, 28 maja 2011, 11:46

Hej.

Mam pewnien problem z rozwiązaniem zadania. Bardzo prosiłabym o pomoc.
Treść zadania to:
W pliku slowa.txt znajdują się słowa każde w oddzielnej linii.
Utwórz strony/skrypty:
1.Formularz umożliwiający podanie słowa
2.Skrypt sprawdzający czy podane słowo znajduje się w pliku
a.Strona wyświetla informację o tym czy słowo znajduje się w pliku czy nie
b.Jeśli słowa nie ma w pliku to powinno zostać do niego dodane

W pliku index.php napisałam:
Kod: Zaznacz cały
<form action="wynik.php" method="post">
<p><b>Podaj słowo: </b> <input type="text" name="slowo" value="" size="10" /></p>
<p> <input type="submit" value="OK" /> </p>
</form>


Natomiast w pliku wynik.php napisałam:
Kod: Zaznacz cały
<?php
$slowo=$_POST['slowo'];

   $plik=fopen('slowa.txt','r+');
   while(!feof($plik)){
   $linia=fgets($plik);
   $rozbite=explode("\n\r",$linia);

   $ile_el=count($rozbite);
   for ($i=0;$i<$ile_el; $i++){
   echo $rozbite[$i];
   echo '<br/>';
   }
   }
   

if (stristr ($rozbite[$i], $slowo)===False)
   echo "Słowo $slowo znajduje się w słowniku";
   else
   echo "Nie znalezniono słowa: $slowo";

?>

Mój problem polega na tym że za każdym razem wyskakuje informacja ze słowo się znajduje nawet jeśli podam błędne. Proszę o pomoc.
asia89
Nowicjusz
 
Posty: 2
Dołączył(a): sobota, 28 maja 2011, 11:40

Re: słownik

Postprzez Morfidon » sobota, 28 maja 2011, 12:24

Hej,

Spróbuj tak:
Kod: Zaznacz cały
<?php
   function isWordInFile($fileName, $searchedWord)
   {
      while($line=fgets($fileName))
      {   
         if (strpos($line, $searchedWord) !== FALSE)
            return true;
      }      
      return false;
   }
   $slowo=$_POST['slowo']; //powinno sie skorzystac z funkcji mysql_real_escape_string

   $plik=fopen('slowa.txt','r+');
   
   if (isWordInFile($plik, $slowo))
      echo "Słowo $slowo znajduje się w słowniku";
   else
      echo "Nie znalezniono słowa: $slowo";
     
      fclose($plik);
   
?>


Przeanalizuj sobie swój kod, $rozbite jest cały czas nadpisywane ostatecznie będzie miało zawsze wielkość równą 1. Poza tym używasz $i poza pętlą, odwołujesz się do tylko jednego z elementów z $rozbite.

Pozdrawiam
Morfidon
Administrator
Administrator
 
Posty: 593
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48

Re: słownik

Postprzez asia89 » sobota, 28 maja 2011, 12:32

Działa :)
Dziękuje bardzo za odpowiedź.
asia89
Nowicjusz
 
Posty: 2
Dołączył(a): sobota, 28 maja 2011, 11:40


Powrót do PHP

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość

cron