нужна помощь по php

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

barbakan

Мой дом здесь!
Регистрация
18 Авг 2007
Сообщения
347
Реакции
399
вот тут статья с конкурса ботмастера




в ней куски кода на php выполняющию разные функции

1) Открываем файл с топиками и преобразуем ссылки в ссылку на корень форума
2) Читаем форум и вытягиваем оттуда ссылки на подфорумы.
3) Читаем подфорум и вытягиваем ссылки на топики
4) Таким образом в переменной $url_topic мы имеем ссылку на топик. Теперь читаем топик и вытягиваем все ссылки, проверяем ведёт ли эта ссылка на другой топик внешнего форума. Если да, значит 99% это то, что нам нужно. Результат складываем в файл res.txt


там же ниже можно скачать скрипт для сбора форумов.
Поставил этот скрипт на денвер все работает но только 4 пункт а первые 3 пункта он не делает. Ну понятно что первый пункт можно сделать без проблем и другим софтом а вот 2 и 3 ?
Так как я не черта не понимаю в php я прошу вашей помощи ... что нужно сделать что бы заработали 2 и 3 пункты или может можно сделать что бы скрипт делал все 4 пункта за раз. Очень надо помогите пожалуйста)

P.S. или может уже есть готовое решение ?
 
код в блоге несколько отличается от скрипта выложеного там же...

<?php
set_time_limit(0);

$vts = fopen("vt.txt", "r");
while (!feof($vts))
{
if (file_exists("stop.txt"))
{
$stop = fopen("stop.txt", "w");
fwrite($stop, "programm stoping");
fclose($stop);
exit;
}
$vt = trim(fgets($vts));
$d = substr($vt, 0, strrpos($vt, "/")+1);
$ch = curl_init($vt);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$p = curl_exec($ch);
preg_match_all("/href=[\"\']?([^\s\"\']*forum\.php[^\&\s\"\']*)[\&\s\"\']/iUs", $p, $m);
$vf = $d.$m[1][0];
$ch = curl_init($vf);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$p = curl_exec($ch);
preg_match_all("/href=[\"\']?([^\s\"\']*topic[^\&\s\"\']*)[\&\s\"\']/iUs", $p, $m);
for($i=0; $i<count($m[1]); $i++)
{
$vt2 = $d.trim($m[1][$i]);
$ch = curl_init($vt2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$p = curl_exec($ch);
preg_match_all("/href=[\"\']?([^\s\"\']*topic[^\&\s\"\']*)[\&\s\"\']/iUs", $p, $m2);
$fff = fopen("res.txt", "a+");
for($j=0; $j<count($m2[1]); $j++) if (strpos($m2[1][$j], "ttp:")!=0) fwrite($fff, $m2[1][$j]."\n");
fclose($fff);
}
}
fclose($vts);
?>

вот рабочий вариант...
 
спасибо большое что откликнулся но этот скрипт дергает только ссылки с определенного топика но он не делает 1,2, и 3 пункты

Вот на примере этого форума

если в vt.txt будет одна ссылка
1. Для просмотра ссылки Войди или Зарегистрируйся
( топик удален ) то в res.txt окажиться 15 ссылок

2. если в vt.txt будет ссылка на не удаленный топик
Для просмотра ссылки Войди или Зарегистрируйся
то в res.txt окажиться 4424 ссылки

3. если в vt.txt будет ссылка на индекс
Для просмотра ссылки Войди или Зарегистрируйся то в res.txt не будет вообще ссылок

то есть получается скрипт дергает ссылки только с рабочего топика и дальше не идет как описано в статье
Или я просто не понял и скрипт работает только в том случае если в vt.txt ссылки только на рабочие топики.

Тогда как можно сделать что бы он выполнял 1,2,3 и 4 действия в случае если форум рабочий но топик удален как в случае с примером Для просмотра ссылки Войди или Зарегистрируйся
 
<?php
set_time_limit(0);

$vts = fopen("vt.txt", "r");
while (!feof($vts))
{
if (file_exists("stop.txt"))
{
$stop = fopen("stop.txt", "w");
fwrite($stop, "programm stoping");
fclose($stop);
exit;
}

$vt = trim(fgets($vts));

$d = substr($vt, 0, strrpos($vt, "/")+1);

$ch = curl_init($d);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);

$p = curl_exec($ch);

preg_match_all("/href=[\"\']?([^\s\"\']*forum\.php[^\&\s\"\']*)[\&\s\"\']/iUs", $p, $m);

foreach($m[1] as $k)
{
$vf = $d.preg_replace("/&amp;/","&",trim($k));

$ch1 = curl_init($vf);

curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch1, CURLOPT_TIMEOUT, 10);

$p1 = curl_exec($ch1);

preg_match_all("/href=[\"\']?([^\s\"\']*topic[^\&\s\"\']*)[\&\s\"\']/iUs", $p1, $m1);

for($i=0; $i<count($m1[1]); $i++)
{
$vt2 = $d.preg_replace("/&amp;/","&",trim($m1[1][$i]));

$ch2 = curl_init($vt2);

curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_TIMEOUT, 10);

$p2 = curl_exec($ch2);

preg_match_all("/href=[\"\']?([^\s\"\']*topic[^\&\s\"\']*)[\&\s\"\']/iUs", $p2, $m2);

$fff = fopen("res.txt", "a+");

for($j=0; $j<count($m2[1]); $j++)
if (strpos($m2[1][$j], "ttp:") !=0) fwrite($fff, preg_replace("/&amp;/","&",$m2[1][$j])."\n");

fclose($fff);
}
}
}
fclose($vts);
?>

довел скрипт до того функционала, что описан в статье...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху