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.
asia89
Nowicjusz
Posty: 2
Dołączył(a): sobota, 28 maja 2011, 11:40

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

Post przez asia89 »

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:

Code: 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:

Code: 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.
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: słownik

Post przez Morfidon »

Hej,

Spróbuj tak:

Code: 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
asia89
Nowicjusz
Posty: 2
Dołączył(a): sobota, 28 maja 2011, 11:40

Re: słownik

Post przez asia89 »

Działa :)
Dziękuje bardzo za odpowiedź.
Post Reply