Рандомная замена анкоров

Тема в разделе "PHP", создана пользователем Mamadu, 30 мар 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Mamadu

    Mamadu

    Регистр.:
    20 ноя 2006
    Сообщения:
    532
    Симпатии:
    1.000
    Прошу помощи в изменении скрипта:
    Код:
    <? 
    if (isset($_GET['key'])) 
    $key = $_GET['key'];
    $key = preg_replace("/ /",'%20',$key);
    $text = "text.txt";
    $content = implode("",file($text));
    $content = preg_replace("/http([^\\1]*?)\\1[^>]/",'[URL="HTTP://www.nulled.WS/redirector.php?url=http%3A%26%2339%3B%2C%24content%29%3B%3Cbr%20%2F%3E%0A%24content%20%3D%20preg_replace%28%26quot%3B%2F%5C%26lt%3Btest%5C%26gt%3B%2F%26quot%3B%2C%26%2339%3B"]<test>[/URL]',$content);
    $f  =  fopen('my.txt',  'r');
    $i  =  0;
    while(!feof($f))  {
        $tmp  =  fgets($f,  8196);
            if  (!rand(0,  $i++))  $string  =  $tmp;
        }
        fclose($f);
    $string  =  trim($string);
    $content = preg_replace("/\<test\>/","$string",$content);
    print $content;
    ?>
    Данный скрипт вставляет рандомный анкор из ancor.txt (содержимое типа: hello, hi, Nice day по строкам около 50 строк) в текст содержащийся в text.txt (в тексте около 3-5 урлов типа http://domen1.com http://domen2.com)
    Проблема в том, что рандомный анкор вставляется во все 3-5 урлов одинаковый, а требуется чтоб в одном тексте все 5 ссылок имели разные анкоры.
     
  2. Jameson

    Jameson Читатель

    Заблокирован
    Регистр.:
    25 июн 2007
    Сообщения:
    406
    Симпатии:
    92
    Написал было уже решение, но регексп меня тут ставит в ступор. Что он должен делать? У меня он заменяет на только "http".

    Если я правильно понял, надо для адресов сайтов в тексте проставлять разные ключевые слова из списка? Вот скриптик, который это делает, с комментариями даже :)
     

    Вложения:

    • index.zip
      Размер файла:
      737 байт
      Просмотров:
      11
  3. Mamadu

    Mamadu

    Регистр.:
    20 ноя 2006
    Сообщения:
    532
    Симпатии:
    1.000
  4. Yaggi Jah

    Yaggi Jah Постоялец

    Регистр.:
    15 ноя 2006
    Сообщения:
    75
    Симпатии:
    31
    Код:
    <? 
    if (isset($_GET['key'])) 
    $key = $_GET['key'];
    $key = preg_replace("/ /",'%20',$key);
    $text = "text.txt";
    $content = implode("",file($text));
    $content = preg_replace("/http([^\\1]*?)\\1[^>]/",'<test>',$content);
    $f  =  fopen('my.txt',  'r');
    $i  =  0;
    $string=array();
    while(!feof($f))  {
        $tmp  =  fgets($f,  8196);
        $tmp =  trim($tmp);
           if(!empty($tmp)) $string[]  =  $tmp;
        }
        fclose($f);
        while($pos=strpos($content,'<test>')) {
            $rnd=array_rand($string);
            $content=substr_replace($content,$string[$rnd],$pos,6);
        }
    print $content;
    ?>
    
     
  5. Mamadu

    Mamadu

    Регистр.:
    20 ноя 2006
    Сообщения:
    532
    Симпатии:
    1.000
    Выходит "вечный" цикл -
    Код:
    Warning: fopen(my.txt) [function.fopen]: failed to open stream: No such file or directory in /home/vaigraweb/public_html/my.php on line 8
    
    Warning: feof(): supplied argument is not a valid stream resource in /home/vaigraweb/public_html/my.php on line 11
    
    Warning: fgets(): supplied argument is not a valid stream resource in /home/vaigraweb/public_html/my.php on line 12
    и так по кругу.....
     
  6. Yaggi Jah

    Yaggi Jah Постоялец

    Регистр.:
    15 ноя 2006
    Сообщения:
    75
    Симпатии:
    31
    Ааа ну да, прошу прощения...
    Вот ваше решение:
    PHP:
    <?
    $content='';
    if (isset(
    $_GET['key'])) {
        
    $text "text.txt";             // файл с текстом
        
    $anch "ancor.txt";            // файл с анкорами
        
    $key rawurlencode(trim($_GET['key']));
        
    $content file_get_contents($text);
        
    $content preg_replace("/http([^\\1]*?)\\1[^>]/",'<test>',$content);
        
    $f  =  fopen($anch,  'r');
        
    $string=array();
        if(
    $f) {
            while(!
    feof($f))  {
                
    $tmp  =  fgets($f,  8196);
                
    $tmp =  trim($tmp);
                if(!empty(
    $tmp)) $string[]  =  $tmp;
            }
            
    fclose($f);
            while(
    $pos=strpos($content,'<test>')) {
                
    $rnd=array_rand($string);
                
    $content=substr_replace($content,$string[$rnd],$pos,6);
            }
        }
    }
    print 
    $content;
    ?>
     
    Mamadu нравится это.
  7. Mamadu

    Mamadu

    Регистр.:
    20 ноя 2006
    Сообщения:
    532
    Симпатии:
    1.000
    To Yaggi Jah:
    Благодарю, все заработало, вопрос решен.
     
Статус темы:
Закрыта.