Думаю, что DOM в вашем случае лишнее, будет проще формировать RSS напрямую, выводя фиду подставляя на лету соотв значения переменных в структуру нужной версии фиды и т.д. например так (файл feed.php)
для этого примера, формат $feed_data может быть например такой:
// это пример структуры, сами же данные должны генериться динамически (браться из БД, вычисляться соотв. образом - например pubDate и т.д.)
$feed_data = array(
array('title' => 'title1', 'url' => 'url 1', 'description' => 'description 1', 'pubDate' => 'pubDate 1', 'category'=> 'category 1'),
array('title' => 'title2', 'url' => 'url 2', 'description' => 'description 2', 'pubDate' => 'pubDate 2', 'category'=> 'category 2'),
...............
);
здесь, массив $feed_data формируется из ваших данных, которые в этом же скрипте могут браться из БД, файлов, ещё как-то вычисляться и т. п., после чего фида просто выводится клиенту(браузеру, спайдеру) с заполненными данными.
Но скорее всего, у вас на этом сайте стоит какой-то движок, и вот формирование рсс потоков у многих встроено и делается штатными средствами, что более правильно. Если стоит самопис, который не формирует ленты, можете делать как в этом примере или воспользоваться готовым решением (что и рекомендуется сделать)
siv1987: Там три src отвечающие за вывод капчи)))
programm, тебе подсказка по регулярному выражению, каждый кусок рисунка начинается с x_image.
Заодно и регулярки подучишь, а то ходишь позоришь всех с таким ником)))))))
Вы заблуждаетесь, как в количестве картинок, так и в группе символов основного паттерна.
Поскольку скрипт может находиться на сервере в какой угодно стране, то для рабочего примера нахождения требуемых УРЛов на капчи, следует использовать разбор DOM-дерева вместо регулярок, например так:
$ch = curl_init('http://win.mail.ru/cgi-bin/signup'); // Обработку куков и "беспалевный" квери_стринг я выкладывать не буду ;)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
$captcha_cntr_id = 'capthaImagesContainer'; //id елемента-родителя для img с капчей(частями капчи)
$doc = new DOMDocument();
$doc->validate = true;
$doc->strictErrorChecking = false;
@$doc->loadHTML($in);
$doc->normalizeDocument();
$xp = new DOMXPath($doc);
$captcha_parts = $xp->query($query_parts);
$captcha_urls = array();
foreach($captcha_parts as $captcha_part) {
array_push($captcha_urls, 'http://win.mail.ru/cgi-bin/' . $captcha_part->getAttribute('src'));
}
// $captcha_urls содержит УРЛ на всю картинку или её части (в зависимости от того, с какого ИПа был запрос)
ТСу же, был показан просто пример, от которого он бы мог оттолкнуться в играх с регулярками, но опять таки повторюсь - решение, используешее регулярные выражения, в данном случае будет не универсально, либо слишком громоздко, кроме того, мейл ру может использовать любой другой тэг, в котором может быть находиться капча, а в случае разбора DOM мы вяжемся только к id элемента, который, в случае чего может быстро подстраиваться в конфиге либо вычисляться ещё как-то эмпирически, в зависимости от изменения процесса регистрации.
Но если разбор именно регулярками для ТС принципиален, то можно получить ноду контейнера ($doc->getElementById('capthaImagesContainer')) и уже после этого парсить регулркой её значение (там будет или сразу <img> или <tr><td><img>... или ещё что), но вариант с xpath, имхо, более универсальней.
Думаю, что DOM в вашем случае лишнее, будет проще формировать RSS напрямую, выводя фиду подставляя на лету соотв значения переменных в структуру нужной версии фиды и т.д. например так (файл feed.php)
для этого примера, формат $feed_data может быть например такой:
здесь, массив $feed_data формируется из ваших данных, которые в этом же скрипте могут браться из БД, файлов, ещё как-то вычисляться и т. п., после чего фида просто выводится клиенту(браузеру, спайдеру) с заполненными данными.
Но скорее всего, у вас на этом сайте стоит какой-то движок, и вот формирование рсс потоков у многих встроено и делается штатными средствами, что более правильно. Если стоит самопис, который не формирует ленты, можете делать как в этом примере или воспользоваться готовым решением (что и рекомендуется сделать)
Там три src отвечающие за вывод капчи)))
programm, тебе подсказка по регулярному выражению, каждый кусок рисунка начинается с x_image.
Заодно и регулярки подучишь, а то ходишь позоришь всех с таким ником)))))))
Вы заблуждаетесь, как в количестве картинок, так и в группе символов основного паттерна.
Для одного IP:
для другого ИП после рефреша:
Поскольку скрипт может находиться на сервере в какой угодно стране, то для рабочего примера нахождения требуемых УРЛов на капчи, следует использовать разбор DOM-дерева вместо регулярок, например так:
ТСу же, был показан просто пример, от которого он бы мог оттолкнуться в играх с регулярками, но опять таки повторюсь - решение, используешее регулярные выражения, в данном случае будет не универсально, либо слишком громоздко, кроме того, мейл ру может использовать любой другой тэг, в котором может быть находиться капча, а в случае разбора DOM мы вяжемся только к id элемента, который, в случае чего может быстро подстраиваться в конфиге либо вычисляться ещё как-то эмпирически, в зависимости от изменения процесса регистрации.
Но если разбор именно регулярками для ТС принципиален, то можно получить ноду контейнера ($doc->getElementById('capthaImagesContainer')) и уже после этого парсить регулркой её значение (там будет или сразу <img> или <tr><td><img>... или ещё что), но вариант с xpath, имхо, более универсальней.
$in - исходник скачанной (кУРЛом или ещё чем) страницы