Нужен скрипт автоперелинковки. Магар инсайд.

Статус
В этой теме нельзя размещать новые ответы.

lipsko

Постоялец
Регистрация
2 Янв 2008
Сообщения
83
Реакции
16
Ситуация 1: есть сайт, в котором основной текст статьи вставляется инклудом.
Текстов очень много и вариант перелинковать руками отбрасывается, так вот нужен скрипт, который имел бы базу в которой соотносились бы слова и ссылки, и он бы подменял найденные слова в статье (из базы) на ссылки, т.е. аналог плагина crosslink для wordpress, только чтобы можно было интегрировать в иную среду.
аналог - контекстные ссылки в САПЕ.
Кто поможет мне - тому помогу и я, ради такого не жалко доброму человеку и водочки отправить (или иного напитка, думаю тут проблемой не станет)

Добавлено через 4 минуты
так же желательно!
чтобы можно было ограничить рамки работы скрипта т.е. есть текст, который не должен попасть под автозамену.
 
PHP:
$slova = array("fruits", "vegetables", "fiber");
$ssilki   = array("http://pizza", "http://beer", "http://ice cream");

$newtext = str_replace($slova, $ssilki, $textin);

echo $newtext;

 
Текст вставлялся обычным инклудом - потому что хранится в обычных текстовых файлах? Тогда тебе придется для начала загонять его в переменную, а потом выводить через echo. Типа такого:

PHP:
//  include 'article.html'; // <- убираем, вместо этого:
$buf = file_get_contents('article.html');
echo $buf;

Теперь про замену. Нужен будет текстовый файлик в виде
слово1;ссылка1
слово2;ссылка2
....
Допустим, links.txt

Мы читаем ссылки из этого links.txt, ищем по одной их в тексте статьи и "подсвечиваем":

PHP:
$buf = file_get_contents('article.txt');
$links = file('links.txt');
foreach ($links as $link) {
   list($word,$url) = explode(';',trim($link));
   $buf = str_replace($word,"<a href=\"$url\">$word</a>",$buf);
}
echo $buf;

Алгоритм далеко не оптимальный, но учитывая что у тебя этих слов вряд ли больше нескольких тысяч, скрипт будет летать. То есть возиться с оптимизацией не вижу смысла, сделал "в лоб" и забыл.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху