|
Jak wyszukiwać w bazach tekstowych
Bazy SQL przeszukuje się w prosty, intuicyjny sposób, ale co zrobić aby
przeszukać plik tekstowy w poszukiwaniu jednego słowa. Poniżej znajdziesz
prosty przykład takiego wyszukiwania, potrzebne będą dwa pliki szukaj.php3
do którego wkleimy poniższy kod (aby nie komplikować cała obsługa została
zawarta w jednym pliku) oraz klienci.inc (ustaw chmod 666) w którym będziemy
przechowywać przykładowo wprowadzone maile.
Cała zabawa polega na tym że pobieramy linie z pliku klienci.inc zamieniamy w
tablice
i wyświetlamy linia po lini, tyle że wyświetlenie jest uwarunkowane tym że
w lini musi znajdować się szukany wyraz, jeśli go nie ma nic nie zostanie
pokazane. Z pomocą przychodzi tu funkcja eregi(), reszta to procedura
analogiczna jak np. w liście mailowej.
szukaj.php3
-------------------------------------------------------------------------------------------
<form>
e.Mail:<br>
<input type=text name=email><input type=submit value=dodaj>
</form>
e.Mail:<br>
<form>
<input type=text name=szukane><input type=submit value=szukaj>
</form>
<b>Notes</b><br><br>
<?
if($email!=""){//dopisujemy
adres do listy
$file="klienci.inc";
$fp=fopen("$file",
"a");
flock($fp, 2);
fwrite($fp, "$email\n");
flock($fp, 3);
fclose($fp);
echo"Adres został dopisany";
}
if($szukane==""){
$szukane="xyz";}//jakiś
ciąg znaków który na pewno nie wystąpi w pliku
$adresy = file("klienci.inc");
for ($index=0; $index <
count($adresy); $index++)
{ $grupa = split("\|",
chop($adresy[$index]));
//zamieniamy linie na tablicę
$count="0";
?>
<? if (eregi("$szukane", $adresy[$index])) {
$count++;
echo "$count. <a href=mailto:$grupa[0]>$grupa[0]</a><br>";}?><?}
//jeśli w tablicy znajduje się szukany ciąg wyświetlamy linię która go
zawiera
//wykorzystujemy tu funkcję eregi(), aby wyświetlić wszystkie pozycje wpisz
@
?>
Powyższy przykład to tylko prosta próba zobrazowania jak może działać
taka wyszukiwareczka, wykorzystując tą metodę można stworzyć nawet wyszukiwarkę dla stron.
dodał: Rip
|