|
|
|
| В mysql таблице есть ячейки с кучей слов! по ним делается поиск. вот по средине например нашел нужное слово и как вывести его И ЕЩЕ плюс, скажем 100 символов перед и сто символов после?
если это поможет, то есть возможность поставить разделитель после любого количества симолов. | |
|
|
|
|
|
|
|
для: 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;
}
?>
|
| |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: virtus
(15.12.2005 в 17:19)
| | Переименуйте функцию cut_string() в какую-нибудь другую - система сообщает, что она у вас два раза объявлена. | |
|
|
|
|
|
|
|
для: 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>";
}
|
будьте добры, вставте эту функцию в этот код.
спасибо | |
|
|
|
|
|
|
|
для: 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>";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Axxil
(16.12.2005 в 13:37)
| | спасибо большое за время потраченное на меня :)
НО вот не работает
Fatal error: Call to undefined function: () in \www\searching.php on line 13 | |
|
|
|
|
|
|
|
для: virtus
(16.12.2005 в 13:50)
| | Покажите searching.php | |
|
|
|