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

Форум PHP

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

 

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

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

тема: Логика поиска

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

 
 автор: casper   (25.03.2005 в 21:05)   письмо автору
 
   для: cheops   (25.03.2005 в 09:21)
 

Точно! всё работает, спасибо!

   
 
 автор: cheops   (25.03.2005 в 09:21)   письмо автору
 
   для: casper   (25.03.2005 в 00:37)
 

Пусть в массиве $search находятся слова которые необходимо найти, тогда можно реализовать следующую конструкцию
<?php
// Обходим строки массива файлов
foreach($word as $k => $s)

  
// Флаг, принимающий значение true, если найдено
  // вхождение одного из ключевых слов
  
$flag false;
  
// Обходим ключевые слова
  
foreach($search as $find)
  {
    if(
substr_count($s$find)>=1$flag true;
  }
  if (
$flag)
  {
     
// Выводим результат
  
}
}
?>

Т.е. перед анализом каждой строки устанавливаем значение переменной $flag в false, если найдено хоть одно вхождение присваиваем флагу значение true - по результату состояния флага выводим или не выводим строку из файла в окно браузера.

   
 
 автор: casper   (25.03.2005 в 00:37)   письмо автору
 
   для: cheops   (24.03.2005 в 22:12)
 

Насчёт функции explode() я знаю, она разделяет строку которую пользователь ввёл на отдельные слова.. А как сделать теперь что бы каждое из слов искалось в массиве, и если в массиве будет найдено оба слова, то что бы значение этого массива выводилось только один раз ?

   
 
 автор: cheops   (24.03.2005 в 22:12)   письмо автору
 
   для: casper   (24.03.2005 в 16:58)
 

Фразу $search следует разбить на отдельные слова, например, при помощи функции explode http://www.softtime.ru/dic/id_dic=21&id_group=1 или preg_split http://www.softtime.ru/dic/id_dic=141&id_group=3 и в цикле foreach организовать несколько проверок (if).

   
 
 автор: casper   (24.03.2005 в 16:58)   письмо автору
 
 

Здравствуйте,
вот скрипт поиска который я сделал:

$word = file("text.txt");
foreach($word as $k => $s) {
if(substr_count($s, $search)>=1) {
$show = str_replace($search, "<font color=blue><b>$search</b></font>", $s);
echo "$show<br>";

Но проблема в том, что он ищет выражения введёный пользователем целиком, то есть логикой И. А как мне сделать что бы он искал с логикой ИЛИ ?

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

   

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

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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