|
|
|
| Привет всем. У меня тут такая задача. мне нужна написать парсер email на PHP. Вроде бы что сложного? Но я элементарно не могу придумать хотя бы нормальный алгоритм. У меня пока два незаконченных варианта.
1. Искать по тексту @ а затем идти до пробела или одинарной кавычки. Проблема в том как идти? Ведь нужно и слева и справа отследить знаки. Можно ли это сделать?
2. Регулярные выражения. Тут я вообще на стопоре сижу... Думаю искать по шаблону мыльник затем заносить в массив после всего писать в файл. Хотя тут тоже все очень размыто и к тому же я не умею еще с ними работать.
Если у кого то есть идеи по этому поводу, поделитесь пожалуйста. Заранее спасибо всем | |
|
|
|
|
|
|
|
для: Holodok
(28.09.2006 в 20:48)
| | Я помню стырил почти все email с жёлтых страниц и спользуя только регулярное выражение:
$pattern = '|"mailto:([^"]*)"|is';
|
А в общем случае надо смотреть страницы которые парситься будут | |
|
|
|
|
|
|
|
для: Axxil
(28.09.2006 в 21:04)
| | Ну вот допустим, взять .html страницу или .txt файл. Прочитать его функциями file или fgets разница будет какая-либо? Если можно пример, пожалуйста. | |
|
|
|
|
|
|
|
для: Holodok
(28.09.2006 в 21:16)
| | Вот реальный, рабочий парсер:
<?
for($i=1;$i<3000;$i++){
$filename = 'http://www.***.ru/center.php?chp=showorg&num='.$i;
echo $i.". ";
$str = file_get_contents($filename);
preg_match_all('|href="mailto:([^"]*)"|is',$str,$out);
if(empty($out[1][0])) echo " no mail";
else{
echo " get ".$out[1][0];
fwrite($handler,$out[1][0]."\n");
}
echo "\n";
}
fclose($handler);
?>
|
Скачивает страницу в переменную, разбирает её спомощью регулярного выражения и если мыло нашёл на странице, то пишет в файл. | |
|
|
|
|
|
|
|
для: Axxil
(28.09.2006 в 21:24)
| | Сказать спасибо - не сказать ничего... :) | |
|
|
|
|
|
|
|
для: Holodok
(28.09.2006 в 21:29)
| | Тут копался, так чё-т и не вышло, а если выдирать мыла из текстовика или из БД ?????
Помогите плз. | |
|
|
|
|
|
|
|
для: Holodok
(29.09.2006 в 16:44)
| | так откуда всё же?
Нужен пример текстового файла.
Если из БД то как выглядят данные в БД.
Больше конкретики... | |
|
|
|
|
|
|
|
для: Holodok
(28.09.2006 в 20:48)
| | Ув. администрация!
Предлагаю закрыть тему, лучше даже удалить. | |
|
|
|
|
|
|
|
для: Night_Charter
(29.09.2006 в 17:15)
| | Уважаемый Night_Charter агрументируйте пожалуйста своё предложение. | |
|
|
|
|
|
|
|
для: Axxil
(29.09.2006 в 17:39)
| | Ну ладно, с БД разобрался с помощью phpMyaddmin.
А вот с текстовиком, бы помочь...
В текстовике, обычный текст, сплошняком, в несколько строк | |
|
|
|
|
|
|
|
для: Holodok
(29.09.2006 в 17:50)
| | ну убираем цикл и меняем filename на имя текстового файла и всё собственно:
<?
$filename = 'file.txt';
echo $i.". ";
$str = file_get_contents($filename);
preg_match_all('|href="mailto:([^"]*)"|is',$str,$out);
if(empty($out[1][0])) echo " no mail";
else{
echo " get ".$out[1][0];
fwrite($handler,$out[1][0]."\n");
}
echo "\n";
fclose($handler);
?>
|
Правда непонятно в каком виде там email ... | |
|
|
|
|
|
|
|
для: Axxil
(29.09.2006 в 17:58)
| | Ну пусть в текстовом файле они в обычном виде, типа : mail@mail.ru
То как я понимаю их надо проверять таким выражением?:
"/^[-0-9a-z_]+@[-0-9a-z_^\.]+\.[a-z]{2,3}$/i"
|
Хм, только вот не особо выходит | |
|
|
|
|
|
|
|
для: Holodok
(29.09.2006 в 19:02)
| |
Для того, чтобы запретить точку, ее достаточно не писать в скобки ...
а так это отрицанием не будет ... таким образом вы разрешили в адресе
использовать знаки ^ и .
"/^[-0-9a-z_]+@[-0-9a-z_]+\.[a-z]{2,3}$/i"
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(29.09.2006 в 19:17)
| | Мамой прощу ))))))
Можно пример? | |
|
|
|
|
|
|
|
для: Holodok
(29.09.2006 в 19:51)
| | Блин...
Пример чего???? | |
|
|
|
|
|
|
|
для: Axxil
(30.09.2006 в 10:34)
| | Ну, в предыдущем примере, он же ищёт по mailto:. Но если это обычный текстовый документ без html тегов ??? И просто надо выбрать из текстовика все мыла(тоесть искать не по mailto, а по @), и записать в жругой текстовик. | |
|
|
|