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

Форум PHP

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

 

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

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

тема: Результаты поиска
 
 автор: vitroot   (17.03.2008 в 10:55)   письмо автору
 
 

Недавно в этой - http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=50778&page=1 теме спрашивал по поводу подцветки слова в строке результата поиска. Спасибо, что помогли. Но встал другой вопрос, опять из серии "работа со строками". Может кто подскажет...
Допустим, искали текст (статью, например), в котором встречается слово "PHP". Нашлась статья в БД, в которой слово "PHP" встречается 3 раза. При помощи substr_count () вычисляю эту цифру - это элементарно, вопрос вот в чем - необходимо в результатах поиска вывести не весь найденный текст, а, допустим, всего 3 предложения, в которых одно содержит искомое слово. Например:

найден текст:

PHP - язык web-программирования. Данный язык очень похож на язык Cи. Этот язык имеет огромное количество функций, облегчающих разработку web-приложений. На данный момент именно на нем написано большенство web-сайтов интернета.

В результате поиска необходимо вывести, допустим, только первые 3 предложения, а не все 4 (в данном случае). Причем заранее, конечно, не известно, сколько предложений существуют ДО искомого слова ("РНР") и ПОСЛЕ. Можно, конечно, ограничиваться не предложениями, а словами, то есть, необходимо вывести ~10 слов ДО искомого слова ("РНР") и 10 слов ПОСЛЕ (можно ориентируясь пробелами). Ума не приложу, как такое реализовать... :(

   
 
 автор: exp   (18.03.2008 в 01:30)   письмо автору
 
   для: vitroot   (17.03.2008 в 10:55)
 

понятно что в строке дело происходит , но непонятно есть в строке html или нет,
и с одной строки выводятся все отрезки с найденным или нет

вариантов масса
<pre><?
$txt 
'text text text text text text text text text text text text 
text text text text text  text php php text text text text text text 
text text text text text text text text text text text text 
text text text text text text text text text text php text text'
;
$blocks 20#столько байт желательно до и после
// строковыми функциями
$start 0;
$result = array();
$len strlen($txt);
while((
$start stripos($txt'php'$start)) !== false)
{
    
$in = (($start $blocks) < 0) ? 
        
0strpos($txt' ', ($start $blocks));# нахождение пробела до
    
$out = (($start $blocks) > $len) ?
        
$len strpos($txt' ', ($start $blocks));# --//-- после
    
$result[] = substr($txt$in, ($out-$in));
    
$start $out;
}
print_r($result);

// и так
eregi('[[:<:]].{0,20}php.{0,20}[[:>:]]'$txt$out);
print_r($out);

?></pre>

   
 
 автор: vitroot   (18.03.2008 в 09:33)   письмо автору
 
   для: exp   (18.03.2008 в 01:30)
 

ОГромное спасибо за ответ! Вот только не очень понял, как отсюда результат доставать из массива...

   
 
 автор: Петр   (18.03.2008 в 11:18)   письмо автору
 
   для: vitroot   (18.03.2008 в 09:33)
 

$out[индекс]
$out[0]
$out[1]
$out[2]
...

   
Rambler's Top100
вверх

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