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

Форум PHP

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

 

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

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

тема: 50 символом до и 50 после нужного слова!!!
 
 автор: virtus   (15.12.2005 в 16:26)   письмо автору
 
 

В mysql таблице есть ячейки с кучей слов! по ним делается поиск. вот по средине например нашел нужное слово и как вывести его И ЕЩЕ плюс, скажем 100 символов перед и сто символов после?
если это поможет, то есть возможность поставить разделитель после любого количества симолов.

   
 
 автор: Axxil   (15.12.2005 в 16:54)   письмо автору
 
   для: virtus   (15.12.2005 в 16:26)
 


<?
$word
='Слово';
$str// ячейка базы
$num // количество силволов справа и слева от искомого слова
function cut_string($word,$str,$num){
  
$pos=strpos($str,$word);
  if(
$pos===false$ret='Не найдено слова';
  else{
   
$start=$pos-$num;
   if(
$start<0$start=0
   
$ret=substr($str,$start,$pos+$num+$strlen($word));
  }
  return 
$ret;
}
?>

   
 
 автор: virtus   (15.12.2005 в 17:19)   письмо автору
 
   для: Axxil   (15.12.2005 в 16:54)
 

$word=$search_text;
$str=$row[text]; // ячейка базы
$num="100"; // количество силволов справа и слева от искомого слова
function cut_string($word,$str,$num){
$pos=strpos($str,$word);
if($pos==false) $ret='Не найдено слова';
else{
$start=$pos-$num;
if($start<0) $start=0;
$ret=substr($str,$start,$pos+$num+$strlen($word));
}
return $ret;
}
Fatal error: Cannot redeclare cut_string() (previously declared in \www\search.php:37) in \www\search.php on line 37

   
 
 автор: cheops   (15.12.2005 в 23:06)   письмо автору
 
   для: virtus   (15.12.2005 в 17:19)
 

Переименуйте функцию cut_string() в какую-нибудь другую - система сообщает, что она у вас два раза объявлена.

   
 
 автор: virtus   (16.12.2005 в 10:36)   письмо автору
 
   для: cheops   (15.12.2005 в 23:06)
 

нет! она однажды использована только в этом примере. Может я не так вставку делаю?

if(isset($todo) and $todo=="search"){
$search_text=ltrim($search_text);
$search_text=rtrim($search_text);

    if($type<>"any"){
$query="select * from searc_f  where text REGEXP '$search_text' or text LIKE '%$search_text%'";
        }else{
$kt=split("",$search_text);
while(list($key,$val)=each($kt)){
if($val<>" " and strlen($val) > 0){$q .= " text like '%$val%' or ";}
            }
$q=substr($q,0,(strLen($q)-3));
$query="select * from sp2b_search where $q";
        }
$search_text = ereg_replace($search_text, "<font size=5 color=#cc0000>\\0</font>", $search_text);
$fff = eregi_replace(">([^<]*)($search_text)", ">\\1<font size=5 color=#cc0000>\\2</font>", $search_text);
echo $query;
echo "<br><br>";
echo $fff;
echo "<br><br>";

$nt=mysql_query($query);
echo mysql_error();
while($row=mysql_fetch_array($nt)){
$search_text = ereg_replace($search_text, "<font size=5 color=#cc0000>\\0</font>", $search_text);
$fff = eregi_replace(">([^<]*)($search_text)", ">\\1<font size=5 color=#cc0000>\\2</font>", $search_text);
$row[text] = str_replace("$_POST[search_text]", "$fff", $row[text]);

echo "<table border=0 cellspacing=0 cellpadding=0><tr><td>Название страницы: 

<b>".$row[title]."</b></td></tr><tr><td>".$row[text]."</td></tr><tr><td><a 

href='".$row[url]."'>".$row[url]."</a></td></tr></table>";

}

будьте добры, вставте эту функцию в этот код.
спасибо

   
 
 автор: Axxil   (16.12.2005 в 13:37)   письмо автору
 
   для: virtus   (16.12.2005 в 10:36)
 

Так непонятно в какое место скрипта вы хотите добавить вызов функции.
Я думаю так наверное:

<?

function cut_string($word,$str,$num){ 
$pos=strpos($str,$word); 
if(
$pos==false$ret='Не найдено слова'
else{ 
$start=$pos-$num
if(
$start<0$start=0
$ret=substr($str,$start,$pos+$num+$strlen($word)); 

return 
$ret
}

if(isset(
$todo) and $todo=="search"){ 
$search_text=ltrim($search_text); 
$search_text=rtrim($search_text); 

    if(
$type<>"any"){ 
$query="select * from searc_f  where text REGEXP '$search_text' or text LIKE '%$search_text%'"
        }else{ 
$kt=split("",$search_text); 
while(list(
$key,$val)=each($kt)){ 
if(
$val<>" " and strlen($val) > 0){$q .= " text like '%$val%' or ";} 
            } 
$q=substr($q,0,(strLen($q)-3)); 
$query="select * from sp2b_search where $q"
        } 
$search_text ereg_replace($search_text"<font size=5 color=#cc0000>\\0</font>"$search_text); 
$fff eregi_replace(">([^<]*)($search_text)"">\\1<font size=5 color=#cc0000>\\2</font>"$search_text); 
echo 
$query
echo 
"<br><br>"
echo 
$fff
echo 
"<br><br>"

$nt=mysql_query($query); 
echo 
mysql_error(); 
while(
$row=mysql_fetch_array($nt)){ 
$search_text ereg_replace($search_text"<font size=5 color=#cc0000>\\0</font>"$search_text); 
$fff eregi_replace(">([^<]*)($search_text)"">\\1<font size=5 color=#cc0000>\\2</font>"$search_text); 
$row[text] = str_replace("$_POST[search_text]""$fff"$row[text]); 

echo 
"<table border=0 cellspacing=0 cellpadding=0><tr><td>Название страницы: 

<b>"
.$row[title]."</b></td></tr><tr><td>".cut_string($search_text,$row[text],100)."</td></tr><tr><td><a 

href='"
.$row[url]."'>".$row[url]."</a></td></tr></table>"

}

?>

   
 
 автор: virtus   (16.12.2005 в 13:50)   письмо автору
 
   для: Axxil   (16.12.2005 в 13:37)
 

спасибо большое за время потраченное на меня :)
НО вот не работает
Fatal error: Call to undefined function: () in \www\searching.php on line 13

   
 
 автор: Axxil   (16.12.2005 в 17:26)   письмо автору
 
   для: virtus   (16.12.2005 в 13:50)
 

Покажите searching.php

   
Rambler's Top100
вверх

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