Обработка текста на перекрёстные ссылки

AlexFree

Новичок
Обработка текста на перекрёстные ссылки

У меня есть в БД 1 таблица: слово, его корень (часть слова), его траслитер.название, описание.

Нужно обработать БД таким образом, чтобы каждое вхождение слова в описание заменялось на ссылку на это слово.

Как это лучше сделать? Как это вообще сделать?
 

AlexFree

Новичок
Регулярные выражения...
спасибо, я знаю

может советы какие-нибудь дадите? В принципе, я уже сделал.. за 3 часа...

-~{}~ 14.11.05 15:00:

вот код
PHP:
$sql="SELECT text FROM w_ms_slovar ORDER BY word";
$res=mysql_query($sql,$db) or die($sql);

$sql1="SELECT * FROM w_ms_slovar WHERE root!='' ORDER BY word";
$res1=mysql_query($sql1,$db) or die($sql1);

while ($row=mysql_fetch_array($res))
{
    $text=$row['text'];
    mysql_data_seek($res1,0);
    while ($word=mysql_fetch_array($res1))
    {
        $a=explode(" ",$word['root']);
        $s="";
        if (count($a)>1) foreach ($a as $val) $s.=$val."[^.,-]*? ";
            else $s.=$word['root']."[^.,-]*? "; //."[^.,-]*? ";

        $pattern="| (".$s.")|ims";

        //echo "<h3>".$pattern."</h3>";
        $text=preg_replace($pattern," <a href='#".$word['code']."'>$1</a>&nbsp;",$text);
    }
    echo "<p>".$text."</p>";
}
 

zarus

Хитрожопый макак
PHP:
$a=explode(" ",$word['root']); 
$s=""; 
if (count($a)>1) foreach ($a as $val) $s.=$val."[^.,-]*? "; 
else $s.=$word['root']."[^.,-]*? "; //."[^.,-]*? "; 
$pattern="| (".$s.")|ims";
Дикий код, нужно подумать еще :)
Подсказка:
PHP:
$a = explode(" ",$word['root']);
foreach ($a as $wordroot) {
  $text = preg_replace('/((?:\s+|^)'.$wordroot.'(?:.*?)(?:\s+|$))/','<a href="#'.$wordroot.'">\1</a>',$text);
}
Дальше сам до ума доведешь.
 

AlexFree

Новичок
zarus
за подсказку - спасибо. Я выложил ещё не доведённый до ума код: там весь прикол был в том, что у слова может быть несколько корней.. точнее, неск. словоформ (корень-то один)
 
Сверху