Помогни ни да направим Uroci.net по - богат! Добави урок

Търсачка от файл, MySQL или от стрингове

PHP » PHP
HunteR   трудност:    видян: 8399

Така тъй като няма какво да правя реших да си поиграя и да си направя една търсачка, която може да търси в зададени от вас стрингове или пък от файлове или MySQL, зависи как си я пригодите.

Опитал съм се да обясня всичко по кода, като след него съм дал и пример как може да стане извеждането на резултати от файл.

 

Ето я търсачката:

 

<?php
// CONFIG //
$min_simb = 3; // колко символа минимум трябва да въведе потребителя
$max_simb = 50; // колко символа максимум може да въведе потребителя
$and_or = true; // ако оставите "true" ще връща резултати само ако съществуват всички въведени думи от потребителя, ако напишете "false" тогава ще връща резулати, в които участва поне една от думите.
$h_g = true; // ако оставите "true" ще различава малки и големи букви, ако напишете "false" няма да прави разлика между малки и големи букви


// Това са текстовете в, които ще се търси. Може да ги заместите с каквото пожелаете. Може да ги изкарате от файл примерно :)
$str = array();
$str[] = "Тук текст 1 :)";
$str[] = "Тук текст 2 :)";
$str[] = "Тук текст 3 :)";


// Формата за търсене
echo "<form action="" method="post">";
echo "Търси: <input type="text" name="searches" size="50" maxlength="$max_simb"> <input type="submit" name="submit" value="Търси">";
echo "</form>";

if (isset($_POST['submit']) && !empty($_POST['searches'])) { // ако е натиснат бутона и е въведено нещо в формата продължаваме
if (strlen($_POST['searches']) >= $min_simb && strlen($_POST['searches']) <= $max_simb) { // ако сме спазили минимални и максималния брой символи за търсене продължаваме
$search = array(); // създаваме празен масив

$razd = explode(" ",$_POST['searches']); // разделяме въведеното от потребителя на думи
foreach ($razd as $s) {
$search[] = $s; // вкарваме думите в по-горе създадения масив
}

for ($i=0;$i<count($str);$i++) { // започваме цикъл със всички текстове
if ($and_or) { $searched = 1; } else { $searched = 0; } // създаваме променлива, която ще играе важна роля по-долу при определяне на резултатите
foreach($search as $value) {
if ($h_g) { str_replace($value,'',$str[$i],$count); } else { str_ireplace($value,'',$str[$i],$count); } // тук определяме дали да различава малките и големи букви или не

if ($and_or) { // ако сме избрали да връща резултати само ако съществуват всички въвдени думи
if ($count == 0) {
$searched = 0;
break;
}
} else {
if ($count >= 1) { // ако сме избрали да връща резултати дори и да съвпада една от въведените думи
$searched = 1;
break;
}
}
}
if ($searched == 1) {
$result[] = $i; // записваме в нов масив върнатите резултати
}
}


// тука вече изкарваме резултатите на екрана :)
if (count($result) >= 1) {
if (count($result) == 1) { $res = "резултат"; } else { $res = "резултати"; }
echo "Търсенето Ви върна <b>".count($result)."</b> $res!<br /><br />";
$n=1;
foreach($result as $key) {
echo $n.". <b>".$str[$key]."</b><br />";
$n++;
}
} else {
echo "Търсенето Ви НЕ върна резултати!";
}
} else { echo "Трябва да въведете от <b>$min_simb</b> до <b>$max_simb</b> символа!"; }
}
?>

 

 

Така кода по-горе ще търси от следните стрингове:

 

$str[] = "Тук текст 1 :)";
$str[] = "Тук текст 2 :)";
$str[] = "Тук текст 3 :)";

 

 

 Вие може да ги променяте, може и да добавяте нови. Всичко си зависи от вас.

Сега ще ви покажа как може да направите да търси от файл :)

Тези стрингове:

 

$str[] = "Тук текст 1 :)";
$str[] = "Тук текст 2 :)";
$str[] = "Тук текст 3 :)";

 

ги заместете с това:

 

$filee = "file.txt"; // тук въвеждате файла от, който ще чете.
$razdelqne = "n"; // тук пишете с какво да разделя резултатите от файла. По default съм го направил нов ред "n"

$file = file_get_contents($filee);
$razdel = explode($razdelqne,$file);
foreach ($razdel as $info) {
$str[] = $info; // тук записваме информацията в масив
}

 

С това приключи урока ми. Надявам се нещо да сте разбрали и да Ви е бил полезен.
Сигурно може да се направи по-лесно и рационално, но това ми дойде на ум :)
Успех :P

 


Урокът е авторски и забранявам преписването му в други сайтове без мое съгласие!



Коментари (5)

charmed на 26.11 2008 в 16:43ч.
урока е добър, но имаш грешка ;) не може еднакви горни кавички на echo и на input формата да ползваш. Крайните трябва за са: ' Иначе дава грешка.

ПП:
Пропуснал си да дадеш как става с база данни.
HunteR на 28.11 2008 в 15:45ч.
Не аз съм допуснал грешката.
Системата за уроци на Uroci.net е премахнала наклонените черти пред всяка кавичка.

А за базата данни не съм пропуснал.
Просто изкарвате резултатите и ги вкарвате в масива $str. Нататък търсачката си се оправя ;) Мислех, че ще се сетите.
Slavov на 04.08 2009 в 18:55ч.
Hunter дай некъв скайп пич че имам едно питане и ще стнае по бързо ако ти го кажа на глас ;)
dogito1 на 23.10 2009 в 22:09ч.
Моля ви дайте Скайп нещо бъркам и не сатава плс помощ намерете ме пиша се: Mr.Dogi
МС предварително
Nepoznatia на 24.05 2010 в 17:38ч.
На места има грешки... Ето как трябва да изглежда текста редактиран и тестван на xampp:

Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com