оставить только несколько символов между поисковым словом

DenVeroid

Новичок
оставить только несколько символов между поисковым словом

вопрос значит такой, нужно сделать поиск по тексту, поиск работает, проблема в другом, как вывести отрывки текста рядом с тем словом которое было в запросе

точно такое можно увидеть на поисковой системе яндекс, там выводиться только отрывки а не весь текст

возможно уже были подобные вопросы на форуме, но я к сожалению не нашёл.

В качестве примера могу показать примено как должно выглядеть.

сам код

$word = 'Smarty'; (поисковый запрос)
$q = mysql_query("select * from table where text LIKE '%$word%'")

while($row=mysql_fetch_array($q)) {

echo $text=str_replace($word,'<b>'.$word.'</b>',$row['text']);
}


допустим переменная $row['text'] будет содержать текст
"Одно из предназначений Smarty - это отделение логики приложения от представления. Конечно же, шаблоны могут содержать в себе логику, но лишь при условии, что эта логика необходима для правильного представления данных. Такие задачи, как подключение других шаблонов, чередующаяся окраска строчек в таблице, приведение букв к верхнему регистру, циклический проход по массиву для его отображения и т.д. - всё это является примером логики представления. Не следует думать, что Smarty заставляет вас разделять логику приложения и представление. Smarty не видит разницы между этими вещами, так что помещать или не помещать логику приложения в шаблоны - решать вам. Если же вы считаете, что в шаблоне вообще не должно быть логики, вы можете ограничиться использованием чистого текста и переменных."

нужно вывести примерно так
"Одно из предназначений <b>Smarty</b> - это отделение логики приложения от представления."


тоесть нужно обрезать перед поискового слова и после, оставить только несколько сомволов между словом


тут у меня проблемы, может кто поможет это сделать?
 

DenVeroid

Новичок
alexhemp, спасибо, но чёт немогу правельно применить эти функции, подскади пожалуйста?
 

tf

крылья рулят
недавно ковырялся в чужом выводе поиска
пришел к выводу что лучше так

$content='В настоящее время......очень много другого текста....ва';

$query='время';
$content_st=$content_and='';
$point=stripos($content,$query);
$point1=$point-100;
if($point1<0) $point1=0;
else $content_st='...';
$len=strlen($content);
$point2=$point+100;
if($point2<$len) $content_end='...';
$content=$content_st.substr($content,$point1,$point2).$content_end;
$content=str_replace($query,'<b>'.$query.'</b>',$content);
echo '<br>'.$content;
 

DenVeroid

Новичок
tf, да но в коде присутсвует функция stripos которая появилась в пятой версии php на четвёртой естесвенно немогу проверить, только если я закоментирую её, сейчас у меня выглядит так

PHP:
....
$content_st=$content_and='..';
//$point=stripos($content,$query);
....
но всёравно вопрос не решён, если мне из текста

CD 1С:Нивал ИГРОТЕКА ''Серп и Молот'' RPG ' 300
CD Brothers in Arms (DVD) ТАКТИЧЕСКИЙ ШУТЕР 300
CD Playboy: The Mansion СИМУЛЯТОР ЖИЗНИ 220
CD Empire Earth (русская версия) СТРАТЕГИЯ 180
CD Empire Earth II (русская версия) СТРАТЕГИЯ 65
CD Меркурий 8 Ролевая игра 220
CD Warhammer 40000: Dawn of war. Русская версия RTS 300
CD Cold Fear (DVD) Action Акелла 300
CD Stolen. Ограбление века (Jewel) Action 220
'CD 1С:Коллекция игрушек ''Nexus. Инцидент на Юпитере''' 220
CD SECOND SIGHT (Action) RUS+ENG версии 65
CD COMBAT: TASK FORCE121 (Action (Shooter) / 3D / 1st Person) RUS+ENG версии 65
CD ELITE WARRIORS: VIETNAM (3D-Action/FPS) RUS+ENG версии 65
CD SPECIAL FORCES: NEMESIS STRIKE (3D-Action/FPS) RUS+ENG версии 65
CD Civilization:Conquests Rise & Rule 65
CD Delta Force: Xtreme 65
CD Stronghold 2 65
CD Act of war 3CD 190
CD Against Rome 2CD 130
CD BATTLEFIELD: Vietnam Crime Syndicates 2CD 130
CD Constantine 2CD 130
CD DOOM III Resurrection of Evil 2CD 130
CD Far Cry: От заката до рассвета 2CD 130
CD Project: Snowblind 3CD 190
CD Restricted Area 2CD 130
CD Taxi MayHem: BerlinTaxi 65
CD Terrorist Takedown 65
CD The Boss La Cosa Nostra 65


задам слово "VIETNAM" то этот код просто выведит сначала до ограниченых символов, но в этом диапазоне неприсутсвует поисковое слово
 

tf

крылья рулят
PHP:
//$point=stripos($content,$query);
коментировать гланую поисковую функцию - зверство ))
единственное что могу посоветовать это привести все в нижни регистр (какой хош) и использовать strpos (PHP 3, PHP 4 , PHP 5)
PHP:
$content=strtolower($content); // || mb_strtolower
$query=strtolower($query);
$point=strpos($content,$query);
 

DenVeroid

Новичок
хм, недурно, всё как и должно быть, спасибо большое

-~{}~ 12.08.05 15:44:

упс, я тут просмотрел одну вещь, если мы будем искать слово что находиться в конце текста, то скрипт необрезает то что находиться перед поисковым словом, скрипт обрезает только то что находиться после слова, а как сделать чтобы скрипт обрезал все что находиться перед словом только оставляя несколько символов примерно около 100 символов
 
Сверху