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

Форум Регулярные Выражения

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

 

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

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

тема: Проблема с поиском
 
 автор: Clocker   (17.10.2006 в 02:37)   письмо автору
 
 

Скрипт рабочий, правда выдаются не все результаты запроса:

Напимер, при запросе: фото чипсет Intel, выдаются только тексты со словами Intel и чипсет, фото нет, хотя в текстах встречается. Что не так и почему?

Вопрос второй: воспользовался выражением:

<?php 
  preg_match
("|([\w]+[\s]+){2}".$word."([\s]+[\w]+){5}|i",$row[8],$out); 
  echo 
$out[0]; 
?> 

Показываются не все тексты, где встречаются искомые слова

Чего не хватает в коде и как оптимизировать:


<?

$searchword 
substr($searchword070);
$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 в 13:32)   письмо автору
 
   для: Clocker   (17.10.2006 в 02:37)
 

Господа, посодействуйте, плз

   
 
 автор: cheops   (17.10.2006 в 14:56)   письмо автору
 
   для: 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];  
?> 

   
Rambler's Top100
вверх

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