|
|
|
| Пытаюсь сделать поиск по БД. В качестве образца вывода результатов поиска использую Google. Нужно:
чтобы в результате выводилось 3-4 строчки текста - ЦЕЛЫЕ предложения. В этом и проблема, границы предложения, определяю по точке, но точка может быть: датой (23.02), сокращением (г.). К тому же мне кажется, что мой метод определения границ предложения не оптимальный. Что посоветуете.
<?php
$sql= "SELECT 'id', 'text' FROM find_test
WHERE 'text' LIKE '%".$good."%' ORDER BY 'text' DESC";
$res2 = mysql_query($sql);
$highlight = str_replace(" ", "|", $good);
while ($my = mysql_fetch_array($res2))
{
$string=DelHTML($my["text"]);
// ищем начало искомой строки
$beg = strpos($string, $good);
if (($beg-50) < 0)
$beg = 0;
else $beg=$beg-50;
// ищем начало предложения по точке
$beg_t = strpos($string, '.', $beg-100)+1;
// длинна строки, по точке
$len = strpos($string, '.', $beg+150) - $beg_t+1;
$string = substr($string, $beg_t, $len);
// находим искомое слово выделяем его
echo '<br>'.ereg_replace($highlight, "<b><font color=#cc0000>\\0</font></b>", $string
).'<br><a href="find.php?read&id='.$my["id"].'">Открыть ссылку</a><br>';
}
?>
|
| |
|
|