поиск и замена в строке из масива. как?

set_st

Guest
поиск и замена в строке из масива. как?

поставилась мне задача, до решения которой немогу додуматься.
есть масив слов, выгребаемый из базы данных.
есть также строка - предложение, в котором есть одно из слов масива.
задача: к примеру выделить жирным это слово или еще чего с ним сделать.
как это сделать?
 

set_st

Guest
усложню ситуацию.
нужно вычислить у этого слова айдишник из базы и дернуть дополнительную информацию, описание к примеру.
 

Demiurg

Guest
давай так:
ты полностью объяснишь задачу, а не будем играть в кошки-мышки ?
 

set_st

Guest
ок.
есть таблица в базе данных в которой содержатся слова и их описания, необходимо в тексте находить эти слова, выделять их и методом title='' вешать на них описания. тоесть какбы глосарий :) текст в котором ищем тоже из базы берется только из другой таблицы.
 

kvf77

Red Devil
set_st
читаешь из базы в массив слова, которые подлежат замене. потом читаешь файл с текстом. str_replace в цикле или по массиву.
не рекомендую делать это в реальном времени - сайт висанет конкретно, и если слов очень много - ваще не будет толком работать.
 

set_st

Guest
я думал делать через str_replace с 2мя масивами, в одном чего искать в другом чем заменять. тока тормозит. как можно сделать чтоб быстрее :)?
 

kvf77

Red Devil
set_st

как-как - обрабатываешь страницу и сохраняешь ее в обработанном виде наряду с оригиналом. показываешь всегда обработанную версию. если меняется оригинал - опять пробегаешь по оригиналу и заменяешь старую обработанную версию на новую
 

set_st

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

kvf77

Red Devil
set_st
я так понял ты статьи так хочешь проиндексировать? откуда там столько динамики? не понимаю.

а все остальное - это не сложно.
1) у оригинала стоит флаг что он изменился
2) твой скрипт при выводле видит его и индексирует оригинал
3) сохраняет проиндексированный оригинал в другой таблице
3) убирает флаг изменения оригинала
4) как только меняем оригинал - опять выставляем флаг изменения
 

kruglov

Новичок
Упрощенно:

имеем массив ключевых слов и соответствующих им описаний.
делим текст страницы на массив по словам.
проходим по массиву слов страницы, ищем через array_search в массиве ключевых слов, если находим - заменяем.
implode(массив слов страницы)

Я думаю, должно не особо тормозить.

Ну или построить большое reg-выражение типа
PHP:
echo preg_replace('/(word1|word2|...|wordn)/e', "'<acronym title=' .get_description('\\1'). '>' .  '\\1' . '</acronym>'", $text);
Строка не отлажена, не учитывает то, что при выделении слова "юг" выделится вторая половина слова "утюг" и пр. Только демонстрирует мысль
 
Сверху