Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Пойск в текстовом файле
 
 автор: makigo   (30.04.2010 в 13:28)   письмо автору
 
 

Здравствуйте дорогие программисты.
Я только начал изучать 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'] на число введенных букв из формы.

Заранее спасибо!

  Ответить  
 
 автор: Slo_Nik   (30.04.2010 в 15:33)   письмо автору
 
   для: makigo   (30.04.2010 в 13:28)
 

>И по поводу второй части задачи как реализовать проверку $_GET['search'] на число введенных букв из формы.
функция strlen() возвращает кол-во символов в строке

  Ответить  
 
 автор: Расшифровка   (01.05.2010 в 20:10)   письмо автору
 
   для: makigo   (30.04.2010 в 13:28)
 

1. а зачем ты бьешь текст на ":" ?
2. вместо $general = file ("data.txt");
проще взять file_get_contents при большом текстовом файле работа будет быстрее выполняться
3. поиск не регуляркой а stristr быстрее,

  Ответить  
 
 автор: makigo   (04.05.2010 в 20:03)   письмо автору
 
   для: Расшифровка   (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>";
}

}
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования