|
|
|
| Здравствуйте дорогие программисты.
Я только начал изучать php и у меня такая вот задачка вышла:
Имеем базу в текстовом файле:
data.txtв виде:
text1::text2::text3::text4::
text1::text2::text3::text4::
...
форму пойска form.html
<form method="GET" action="search.php">
<p><input type="text" name="search" size="20"><input type="submit" value="Submit"></p>
</form>
|
и файл search.php
<?php
$req = $_GET['search'];
$general = file ("data.txt");
for ( $i = 0; $i < count ($general); $i++ ){
list ($text1,$text2,$text3,$text4) = explode ("::", $general[$i]);
if (preg_match("/$req/", "$text4")) {
echo "was found $req ";
} else {
echo "was NOT found $req";
}
echo "<br>";
}
?>
|
1. Надо попробовать написать простой код для пойска с значениями text4 из текстовой базы.
2. И потом сделать ограничение на количество букв в запросе (больше 3).
Я начал думать над первым пунктом и написал этот простой код .Но оно проверяет каждую строку и выдает результаты так (скажем если у нас 3 строки):
was found text4
was NOT found text4
was NOT found text4
Как сделать чтобы если нашел показывал, что нашел совпадение а если нет выдал что совпадений просто нету, а не показывал результаты всех строк.
И по поводу второй части задачи как реализовать проверку $_GET['search'] на число введенных букв из формы.
Заранее спасибо! | |
|
|
|
|
|
|
|
для: makigo
(30.04.2010 в 13:28)
| | >И по поводу второй части задачи как реализовать проверку $_GET['search'] на число введенных букв из формы.
функция strlen() возвращает кол-во символов в строке | |
|
|
|
|
|
|
|
для: makigo
(30.04.2010 в 13:28)
| | 1. а зачем ты бьешь текст на ":" ?
2. вместо $general = file ("data.txt");
проще взять file_get_contents при большом текстовом файле работа будет быстрее выполняться
3. поиск не регуляркой а stristr быстрее, | |
|
|
|
|
|
|
|
для: Расшифровка
(01.05.2010 в 20:10)
| | Не знаю даже...Вообще это несложно менять.
Я написал вот так.Уважаемые профессионалы, подскажите пожалуйста может я что то упустил (кроме того что все еще не могу выдать сообщение о том, что ничего не нашел...)
<?
$s = $_POST['search'];
if(strlen(utf8_decode($s))<=3){
echo "Request length is ".strlen(utf8_decode($s)).", but must be more than 3";
}else{
$f = file("file.txt");
foreach ($f as $num => $str){
if(strpos($str, "$s")!==false){
echo "Find in line ".($num+1)." ";
list ($text1,$text2,$text3,$text4) = explode ("::", $f[$num]);
echo"$text1,$text2,$text3,$text4<br><br><br>";
}
}
}?>
|
| |
|
|
|