|
|
|
| Здравствуйте! Помогите решить следующую задачу: Мне необходимо на определенном сайте периодически считывать данные, прочесывать страницы как это делает, например rambler, допустим необходимо найти адрес электронной почты на странице, думаю что это должно работать так:
<?php
$URL = "localhost"; //
$path = "/";
$fp = @fsockopen($URL, 80, $errno, $errstr, 10);
if (!$fp) { echo 'Нет загрузки!<p>Ошибка при открытии сайта '.$URL.'</p><p> № ошибки '.$errno.'</p><p> ОПИСАНИЕ ошибки '.$error_description.'</p>';
}
//------------------------------------------------------------------------------------
else
{
echo 'Загрузили успешно!<P> URL сайта = '.$URL.'</p> ';
fputs ($fp, "GET / HTTP/1.0\r\n");
fputs ($fp, "\r\n");
while (!feof($fp)) //проверяем конец ли файла?
{
//получить строку
$line = fgets($fp, 1024);
//посмотреть где попрежнему есть email
while(eregi ("[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}", $line, $match))
{
print("<li>{$match[0]}</li>\n");
//удалить все email из строки
$line = ereg_replace($match[0], "", $line);
}
}
echo("</ul>\n");
}
@fclose($fp);
?>
|
Так вот локально все работает, а если подставить www адрес, то email почему-то не находиться. Грамотные люди подскажите, что не так. | |
|
|
|
|
|
|
|
для: Чайка
(08.10.2007 в 21:04)
| | Во-первых, в каком виде вы подставляете адрес? Нужно без http:// .
Во-вторых, не забывайте, что в адресе почты тире тоже нередко встречаются. А у вас их нет. | |
|
|
|
|
|
|
|
для: Shorr Kan
(08.10.2007 в 21:39)
| | Подставляю без http:// , а регулярное выражение может стоять любое, другое это не так важно, я ведь пример привел, экспериментирую на своем сайте, локально находит емайл, а глобально нет, хотя загружается без ошибок, вот загадка. | |
|
|
|
|
|
|
|
для: Чайка
(08.10.2007 в 21:45)
| | То есть, если принтануть $line после строчки $line = fgets($fp, 1024); - выводится то, что и должно? Тот самый сайт, где ищется мейл? | |
|
|
|
|
|
|
|
для: Shorr Kan
(08.10.2007 в 21:57)
| | Если правильно понял, то надо сделать так
//получить строку
$line = fgets($fp, 1024);
echo $line ;
|
результат локально выводит содержимое файла, глобально информацию
HTTP/1.1 200 OK Date: Mon, 08 Oct 2007 18:06:55 GMT Server: Apache/1.3.37 (Unix) mod_fastcgi/2.4.2 PHP/4.4.7 mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 mod_ssl/2.8.28 OpenSSL/0.9.7f Last-Modified: Sun, 23 Sep 2007 08:00:45 GMT ETag: "270047-647-46f61d2d" Accept-Ranges: bytes Content-Length: 1607 Connection: close Content-Type: text/html
о домене и хостинге. Что не так? | |
|
|
|
|
|
|
|
для: Чайка
(08.10.2007 в 22:14)
| | Давайте сперва упростим код до предела. Попробуйте так:
<?
$line=file_get_contents("http://softtime.ru/");
preg_match_all('|[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}|isU',$line,$match);
print_r($match);
?>
|
| |
|
|
|
|
|
|
|
для: Shorr Kan
(08.10.2007 в 22:35)
| | Спасибо, так работает | |
|
|
|