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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Пойск в текстовом файле

Сообщения:  [1-4] 

 
 автор: 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>";
}
} 
}?>

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

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

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

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

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

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

  Ответить  

Сообщения:  [1-4] 

Форум разработан IT-студией SoftTime