|
|
|
| Скрипт рабочий, правда выдаются не все результаты запроса:
Напимер, при запросе: фото чипсет Intel, выдаются только тексты со словами Intel и чипсет, фото нет, хотя в текстах встречается. Что не так и почему?
Вопрос второй: воспользовался выражением:
<?php
preg_match("|([\w]+[\s]+){2}".$word."([\s]+[\w]+){5}|i",$row[8],$out);
echo $out[0];
?>
|
Показываются не все тексты, где встречаются искомые слова
Чего не хватает в коде и как оптимизировать:
<?
$searchword = substr($searchword, 0, 70);
$searchword = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $searchword);
$good = trim(preg_replace("/\s(\S{1,2})\s/", " ", ereg_replace(" +", " "," $searchword ")));
$good = ereg_replace(" +", " ", $good);
$db->query("SELECT id FROM $tbl WHERE text LIKE '%". str_replace(" ", "%' OR text LIKE '%", $good). "%'");
$word = explode(" ", $searchword);
while (list($k, $v) = each($word))
{
if (strlen($v)>2)
$stat[]="<b> $v: </b>".
$db->numRows($db->query("SELECT * FROM $tbl WHERE text LIKE '%$v%'"));
else
$stat[]="$v: <font color=#cc0000>Слишком короткий запрос</font>";
}
$word_stats = "Найдено совпадений по ". implode("", $stat). "<br />";
unset($stat);
echo $word_stats.'<br />';
echo '<ul>';
while(
$row = $db->fetchAssoc())
{
echo '<li><a href="'.SITE_URL.'/articles/?id='.$row['id'].'&cid='.$row['cid'].'">'.$row['title'].'</a></li>';
echo '<br>';
preg_match("|([\w]+[\s]+){2}".$searchword."([\s]+[\w]+){5}|i",$row[text],$out);
echo $out[0];
echo '</br>';
}
echo '</ul>';
?>
|
| |
|
|
|
|
|
|
|
для: Clocker
(17.10.2006 в 02:37)
| | Господа, посодействуйте, плз | |
|
|
|
|
|
|
|
для: Clocker
(17.10.2006 в 02:37)
| | 2. при использовании переменных в регулярных выражениях лучше пропускать их содержимое через функцию preg_quote()
<?php
preg_match("|([\w]+[\s]+){2}".preg_quote($word)."([\s]+[\w]+){5}|i",$row[8],$out);
echo $out[0];
?>
|
| |
|
|
|