Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Модификация скрипта (http://forum.oszone.net/showthread.php?t=131427)

venuko 09-02-2009 13:48 1033513

Модификация скрипта
 
Ребята, плиз, подскажите как изменить данный скрипт:

Код:

<style>

p {
        font-family: Arial;
        font-size: 14px;
}

a.ssilka1 {
        color: #ff0000;
        text-decoration: underline;
}

a.ssilka1:hover {
        color: #ff0000;
        text-decoration: none;
}

a.ssilka2 {
        color: #33cc00;
        text-decoration: underline;
}

a.ssilka2:hover {
        color: #33cc00;
        text-decoration: none;
}

a.ssilka3 {
        color: #ff0099;
        text-decoration: underline;
}

a.ssilka3:hover {
        color: #ff0099;
        text-decoration: none;
}

</style>

<?php


@setlocale(LC_CTYPE, 'ru_RU.CP1251');


//для ссылок внутри статей
$words=array(
'болезни',
'болезнь',
'болезнью',
'болезнями',
'болезней',
'выделяем любое словосочетание',
'Одна большая фраза',
'ракета'
);
$open_tags=array(
'<a class="ssilka1" href="modules.php?name=page">',
'<a class="ssilka1" href="modules.php?name=page">',
'<a class="ssilka1" href="modules.php?name=page">',
'<a class="ssilka1" href="modules.php?name=page">',
'<a class="ssilka1" href="modules.php?name=page">',
'<a class="ssilka2" href="modules.php?name=page2">',
'<a class="ssilka3" href="modules.php?name=page3">',
'<a class="ssilka3" href="modules.php?name=page3">'
);
$close_tags=array(
'</a>',
'</a>',
'</a>',
'</a>',
'</a>',
'</a>',
'</a>',
'</a>'
);

function highlight_first($text, $words, $open_tags, $close_tags) {
        $arReplace = array();
        for($i=0; $i<count($words); $i++) {
                $words[$i] = "/\b(".preg_quote($words[$i]).")\b/i";
                $arReplace[]=  $open_tags[$i]. '\1'. $close_tags[$i];
        }
        $text =        preg_replace($words, $arReplace, $text, 1);
        return $text;
}

$text = "Пример текста и болезни и потом ещё всякий текст и бац болезнь. Потом дальше болезнью. Болезнями разными. Много всяких плохих болезней. Аага точно болезни. Возможно в тексте нужно будет выделяем любое словосочетание! Здесь будет ещё Одна большая фраза. И ещё полетит в космос ракета. Ракета это круто :)";
$text=highlight_first($text,$words,$open_tags,$close_tags);

echo "<br><p><b>Сейчас результат такой:</b></p>";

echo "<p>$text</p>";

echo "<br/><hr>";

echo "<p><b>Должен быть результат таким:</b></p>";

echo "<p>Пример текста и <a class=\"ssilka1\" href=\"modules.php?name=page\">болезни</a> и потом ещё всякий текст и бац болезнь. Потом дальше болезнью. Болезнями разными. Много всяких плохих болезней. Аага точно болезни. Возможно в тексте нужно будет <a class=\"ssilka2\" href=\"modules.php?name=page2\">выделяем любое словосочетание</a>! Здесь будет ещё <a class=\"ssilka3\" href=\"modules.php?name=page3\">Одна большая фраза</a>. И ещё полетит в космос ракета. Ракета это круто :)</p>";

?>

Сейчас скрипт выделяет (оборачивает ссылкой) самые первые по тексту разные словоформы, повторения не выделяет, а нужно чтобы ещё не выделял подряд разные словоформы с одинаковой ссылкой.

Подскажите как модифицировать код, чтобы получить результат как показано в скрипте под чертой?

venuko 09-02-2009 14:24 1033549

ни кто не знает :(

Sham 09-02-2009 14:57 1033593

Попроще не можете объяснить? Никто не понял, чего надо то...

venuko 09-02-2009 15:52 1033645

Цитата:

Цитата Sham
Попроще не можете объяснить? Никто не понял, чего надо то... »

ну вот страница пример, сверху что щас скрипт делает, а под чертой что должно быть, после модификации существующего скрипта: http://saveplanet.su/text/text.php

Sham 09-02-2009 17:04 1033698

Цитата:

Цитата venuko
for($i=0; $i<count($words); $i++) {
$words[$i] = "/\b(".preg_quote($words[$i]).")\b/i";
$arReplace[]= $open_tags[$i]. '\1'. $close_tags[$i];
}
$text = preg_replace($words, $arReplace, $text, 1); »

там надо с переменными поиграть, и preg_replace внутри цикла делать...

PHP код:

for($i 0$i count($words); $i++)
{
    
$words "/\b(".preg_quote($words[$i]).")\b/i";

    
$arReplace $open_tags[$i]. '\1'$close_tags[$i];

    if(@
$prev_tag == $open_tags[$i] && @$is_replaced) continue;

    
$prev_text $text;

    
$text preg_replace($words$arReplace$text1);

    
$is_replaced = ($prev_text != $text);

    
$prev_tag $open_tags[$i];



venuko 09-02-2009 18:00 1033733

хорошо, но ещё подумаю :)


Время: 08:36.

Время: 08:36.
© OSzone.net 2001-