|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 64738.8598 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
27.11.2012, 10:33
|
#1
|
Senior Member
Регистрация: 03.12.2009
Сообщений: 138
Бабло: $51655
|
Кто может допилить код PHP
Цитата:
<?php
#########################################
##
#########################################
set_time_limit(0);
$handle = fopen("emails.txt", "r");
$pattern = "#\.com$|\.info$|\.net$|\.org$|\.us$|\.de$|\.tv$|\ .ws$|\.tr$|\.gov$|\.biz$|\.uk$|\.name$|\.mil$|\.ed u$#"; #маски для домена \.{{EXT}}$, разделитель "|"
$wantEmails = 'good_emails.txt';
$otherEmails = 'other_emails.txt';
while (!feof($handle)){
$email = trim(fgets($handle, 1024));
if (preg_match($pattern, $email, $matches)>0){
file_put_contents($wantEmails, $email .PHP_EOL,FILE_APPEND);
}else file_put_contents($otherEmails, $email.PHP_EOL,FILE_APPEND);
}
fclose($handle);
?>
|
вот код ... он фильтрует email адреса которые оканчиваются на .com$|\.info$|\.net$|\.org$|\.us$|\.de$|\.tv$|\.ws $|\.tr$|\.gov$|\.biz$|\.uk$|\.name$|\.mil$|\.edu
надо дописать что бы была проверка если ли в строке знак @ , что был конкретный адрес почты ..
кто может допилить немного???
|
|
|
27.11.2012, 11:20
|
#2
|
Senior Member
Регистрация: 09.01.2010
Адрес: ☭
Сообщений: 203
Бабло: $39450
|
PHP код:
<?php
#########################################
##
#########################################
set_time_limit(0);
$handle = fopen("emails.txt", "r");
$pattern = "#\.com$|\.info$|\.net$|\.org$|\.us$|\.de$|\.tv$|\ .ws$|\.tr$|\.gov$|\.biz$|\.uk$|\.name$|\.mil$|\.ed u$#"; #маски для домена \.{{EXT}}$, разделитель "|"
$wantEmails = 'good_emails.txt';
$otherEmails = 'other_emails.txt';
while (!feof($handle)){
$email = trim(fgets($handle, 1024));
if (filter_var($email, FILTER_VALIDATE_EMAIL) ){
file_put_contents($wantEmails, $email .PHP_EOL,FILE_APPEND);
}else file_put_contents($otherEmails, $email.PHP_EOL,FILE_APPEND);
}
fclose($handle);
?>
ты где этот код взял?
|
|
|
27.11.2012, 11:25
|
#3
|
Senior Member
Регистрация: 03.12.2009
Сообщений: 138
Бабло: $51655
ТС -->
|
ТС
знакомый один помог .. но щас его нету
если можешь подправь или по новой сделать.. там смысл такой что бы отфильтровать базу маилов и выберать только те которые оканчиваются на com , еdu org info и тд и что бы проверка была на наличие @ ... если всё есть записывать в папку good_emails.txt если какое то условие не выполняется то в 'other_emails.txt'
|
|
|
27.11.2012, 12:09
|
#4
|
Юниор
Регистрация: 25.03.2012
Сообщений: 1,069
Бабло: $339980
|
ну по идее, стоит найти в инете регулярку на проверку почты и сделать эту проверку в коде )
|
|
|
27.11.2012, 12:15
|
#5
|
Senior Member
Регистрация: 03.12.2009
Сообщений: 138
Бабло: $51655
ТС -->
|
ТС
непройдёт ...
в стречаются строки такого типа
mail@mail
без доменной зоны .. а регулярки тащут это как нормальную почту..
|
|
|
27.11.2012, 12:30
|
#6
|
Юниор
Регистрация: 25.03.2012
Сообщений: 1,069
Бабло: $339980
|
ну сначала проверка на почту, потом проверка на зону ) Не? )
|
|
|
27.11.2012, 15:07
|
#7
|
Senior Member
Регистрация: 09.01.2010
Адрес: ☭
Сообщений: 203
Бабло: $39450
|
поправил же, не?)
|
|
|
28.11.2012, 16:34
|
#8
|
Senior Member
Регистрация: 19.04.2007
Сообщений: 2,393
Бабло: $314345
|
PHP код:
<?php
set_time_limit(0);
$emails = array_unique(array_map('trim', file('emails.txt')));
$pattern = "#\.com$|\.info$|\.net$|\.org$|\.us$|\.de$|\.tv$|\.ws$|\.tr$|\.gov$|\.biz$|\.uk$|\.name$|\.mil$|\.edu$#";
$f1 = fopen('good_emails.txt', 'a'); $f2 = fopen('other_emails.txt', 'a');
foreach ($emails as $email) { if (strpos($email, '@') > 0 && preg_match($pattern, $email)) { fwrite($f1, $email."\n"); } else { fwrite($f2, $email."\n"); } }
fclose($f1); fclose($f2); ?>
|
|
|
28.11.2012, 17:46
|
#9
|
Senior Member
Регистрация: 18.08.2007
Сообщений: 1,098
Бабло: $199375
|
PHP код:
#!/usr/bin/env python # -*- coding: utf-8 -*-
mails_file = 'mails.txt' filter = ['com', 'info', 'net', 'org', 'us', 'de', 'tv', 'ws', 'tr', 'gov', 'biz', 'uk', 'name', 'mil', 'edu'] print '\n'.join([x.rstrip() for x in open(mails_file).readlines() if '@' in x and x[x.rfind('.') + 1:].rstrip() in filter])
как то так )
|
|
|
28.11.2012, 18:02
|
#10
|
Senior Member
Регистрация: 18.08.2007
Сообщений: 1,098
Бабло: $199375
|
или так
PHP код:
#!/usr/bin/env python # -*- coding: utf-8 -*- import string
mails_file = 'mails.txt' filters = ['com', 'info', 'net', 'org', 'us', 'de', 'tv', 'ws', 'tr', 'gov', 'biz', 'uk', 'name', 'mil', 'edu'] print '\n'.join(filter(lambda x: '@' in x and x[x.rfind('.') + 1:] in filters, map(string.strip, open(mails_file).readlines())))
|
|
|
|