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

Тема в разделе "Как сделать...", создана пользователем lipsko, 4 июл 2009.

Статус темы:
Закрыта.
  1. lipsko

    lipsko Постоялец

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

    Добавлено через 4 минуты
    так же желательно!
    чтобы можно было ограничить рамки работы скрипта т.е. есть текст, который не должен попасть под автозамену.
     
  2. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    PHP:
    $slova = array("fruits""vegetables""fiber");
    $ssilki   = array("http://pizza""http://beer""http://ice cream");

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

    echo 
    $newtext;
    http://ru2.php.net/str_replace
     
  3. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Текст вставлялся обычным инклудом - потому что хранится в обычных текстовых файлах? Тогда тебе придется для начала загонять его в переменную, а потом выводить через 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;
    Алгоритм далеко не оптимальный, но учитывая что у тебя этих слов вряд ли больше нескольких тысяч, скрипт будет летать. То есть возиться с оптимизацией не вижу смысла, сделал "в лоб" и забыл.
     
Статус темы:
Закрыта.