Ищу Автоматическая расстановка ссылок в тексте

Тема в разделе "Софт", создана пользователем -НиК-, 17 янв 2011.

  1. -НиК-

    -НиК-

    Регистр.:
    12 фев 2007
    Сообщения:
    163
    Симпатии:
    130
    Имеется текст и список ссылок.
    Нужно программа, которая расставит ссылки в тексте, т.е. случайным образом выберет слово и прикрепит к нему ссылку из списка.
     
  2. Maza

    Maza

    Регистр.:
    3 июл 2007
    Сообщения:
    255
    Симпатии:
    118
    Формат представления текста, на каждой новой строчке Ссылка и Текст?
    Формат вывода какой.
    На быструю руку навоял.


    PHP:
    <?php
        
    function workfile ($text,$link){
        
        if (
    is_file($text) && is_file($link))    
            print 
    "Файл $text и $link существует!<br>";
        else
            print 
    "Файл $text и $link не существует  работа с файлом не возможна!<br>";

        
    $ft fopen($text"r") or die("Файл - $text не может открыться на чтение!");
        
    $fl fopen($link"r") or die("Файл - $link не может открыться на чтение!");
        
        
    $fp fopen("output.sql""a") or die("Файл - $file не может записать данные!");
        
        
    //..Читаем в массив весь текст
        
    $file file($text);    
        foreach (
    $file as $a) {
            
    $mass[]=$a;
        }
        
        
    $maxleng count($mass);
        echo 
    "Количество строк текста $maxleng";
        
    //..Читаем в массив все ссылки
        
    $filelink file($link);    
        foreach (
    $filelink as $a) {
            
    fwrite($fp$a.$mass[rand(0$maxleng)]);    
        }
        
        
    fclose($ft);
        
    fclose($fl);    
        
    fclose($fp);    
        }
        
        
    workfile ("text.txt","link.txt");
    ?> 
     
    -НиК- нравится это.
  3. -НиК-

    -НиК-

    Регистр.:
    12 фев 2007
    Сообщения:
    163
    Симпатии:
    130
    Пример текста:
    HTML:
    Делать мыло своими руками очень приятно. Вы становитесь немного колдуньей, а кухня наполняется живыми запахами трав, цветов и пряностей. 
    <br>
    Делать мыло своими руками очень просто. За один вечер вы можете наварить подарков всем друзьям и коллегам. 
    После обработки должно получится что-то типа:
    HTML:
    Делать <a title="мыло" href="http://ссылка1.ру">мыло</a> своими руками очень <a title="приятно" href="http://ссылка2.ру">приятно</a>. Вы становитесь немного <a title="колдуньей" href="http://ссылка3.ру">колдуньей</a>, а кухня наполняется живыми запахами трав, цветов и пряностей.
    <br>
    Делать мыло своими <a title="руками" href="http://ссылка4.ру">руками</a> очень просто. За один вечер вы можете <a title="наварить" href="http://ссылка5.ру">наварить</a>  подарков всем друзьям и коллегам.
     
  4. G.Vad!k

    G.Vad!k Постоялец

    Регистр.:
    14 окт 2007
    Сообщения:
    61
    Симпатии:
    13
    Ищет по ключевикам, заменяет на ссылки в рандомном порядке:

    PHP:
    $file=file("statia.txt"); 
    $pattern='#(анкор1|анкор2)#Usi';
        for(
    $i=0;$i<sizeof($file);$i++){
                
    $result preg_match_all($pattern,$file[$i],$found);
                
    srand ((float) microtime() * 10000000);
                
    $mix=rand(1,$result);
                
    $file[$i] = preg_replace_callback($pattern,create_function(
                
    '$matches',
                
    'global $result, $mix; static $i=0; $i++; if($i==$mix) {return "<a href=\"http://www.moydomen.ru\">".$matches[1]."</a>";} else return $matches[1];'
                
    ), $file[$i]);
        }
        
    $fp=fopen("statia.txt","w"); 
        
    fputs($fp,implode("",$file)); 
        
    fclose($fp);
     
    -НиК- нравится это.
  5. Maza

    Maza

    Регистр.:
    3 июл 2007
    Сообщения:
    255
    Симпатии:
    118
    Во накорябал, как то так, вроде нормально работает, только если хочешь можешь задать статическое количество ссылок на строку, я рандом до среднего взял.


    PHP:
    <?php
        
    function workfile ($text,$link){
        
        if (
    is_file($text) && is_file($link))    
            print 
    "Файл $text и $link существует!<br>";
        else
            print 
    "Файл $text и $link не существует  работа с файлом не возможна!<br>";

        
    $ft fopen($text"r") or die("Файл - $text не может открыться на чтение!");
        
    $fl fopen($link"r") or die("Файл - $link не может открыться на чтение!");
        
        
    $fp fopen("output.sql""a") or die("Файл - $file не может записать данные!");
        
        
    //..Читаем в массив все линки
        
    $filelink file($link);    
        foreach (
    $filelink as $a) {
            
    $a trim ($a);
            
    $mass[]=$a;        
        }
        
        
    //Общее количество ссылок
        
    $maxleng count($mass);
        
        
    //Обрабатываем текст согласно условию
        
    $filetextfile($text);
        
        
    //Подсчитываем количество строк в файле
        
    $countline=count($filetext);
        
        
    //Расчитываем среднее количество ссылок на строку
        
    $avq $countline/$maxleng;
        
    $numlink 0;
        foreach (
    $filetext as $a) {
            
    $a trim ($a);
            
    //Разбиваем текст на слова
            
    $wordall explode(" "$a);
            
            
    $word = array();
            
    //Делаем массив из слов, а не предлогов
            
    foreach ($wordall as $value){
                if (
    strlen($value) >){
                    
    $word[] = $value;
                }            
            }
            
            for (
    $i=0;$i<rand(0$avq);$i++){
                
    //Номер элемента который будем заменять
                
    $valueword rand(0sizeof($word)-1);
                        
                
    //..Заменяем слово на ссылку
                // Ищем в массиве со всеми словами, то слово которое будем заменять
                
    $wordall[array_search($word[$valueword], $wordall)] = "<a title=\"".$word[$valueword]."\" href=\"".$mass[$numlink]."\">".$word[$valueword]."</a>"
                
                
    $numlink++;
            }
            
            
            
    //Собираем слова в текст
            
    $string implode(" "$wordall);        
            
    fwrite($fptrim($string)."\n");
        }
        
        
    fclose($ft);
        
    fclose($fl);    
        
    fclose($fp);    
        }
        
        
    workfile ("text.txt","link.txt");
    ?>

     
    -НиК- нравится это.