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

Статус
В этой теме нельзя размещать новые ответы.

Mamadu

Хранитель порядка
Регистрация
20 Ноя 2006
Сообщения
538
Реакции
1.019
Прошу помощи в изменении скрипта:
Код:
<? 
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 урлов типа Для просмотра ссылки Войди или Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся)
Проблема в том, что рандомный анкор вставляется во все 3-5 урлов одинаковый, а требуется чтоб в одном тексте все 5 ссылок имели разные анкоры.
 
  • Заблокирован
  • #2
Написал было уже решение, но регексп меня тут ставит в ступор. Что он должен делать? У меня он заменяет на только "http".

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

Вложения

  • index.zip
    737 байт · Просмотры: 11
Код:
<? 
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;
?>
 
Код:
<? 
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;
?>
Выходит "вечный" цикл -
Код:
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
и так по кругу.....
 
Ааа ну да, прошу прощения...
Вот ваше решение:
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;
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху