usuniecie maili onetu z bazy

0

Potrzebuję efektywnego rozwiązania, które będzie szybko działać na dużej ilości danych.
Mam np. bazę maili, z której potrzebuje:

  1. wydobyć maile onetu we wszystkich domenach
  2. przefiltrowanie tej bazy aby nie zawierała maili z onetu
    Tablica:
$maile_onet = array('onet.pl', 'op.pl', 'poczta.onet.pl', 'onet.eu', 'onet.com.pl', 'vp.pl', 'spoko.pl', 'vip.onet.pl', 'autograf.pl', 'opoczta.pl', 'buziaczek.pl', 'adres.pl', 'amorki.pl', 'poczta.onet.eu');

Można to zrobić za pomocą strpos() ale wydaje mi się, że nie jest to wydajne.

	$result = mysql_query("SELECT email FROM maile");
		while($r = mysql_fetch_array($result)) 
		{
			foreach($maile_onet as $kay=>$wartosc)
			{
				$pos = strpos($r['email'], $wartosc);
				if ($pos !== false) 
				{
					echo $r['email'].'<br />';
				}
			}
		}

Proszę o jakiś lepszy przykład tych dwóch moich problemów.

2
select email from maile where substr(email from position('@' in email)+1) in ('onet.pl', 'op.pl', 'poczta.onet.pl', 'onet.eu', 'onet.com.pl', 'vp.pl', 'spoko.pl', 'vip.onet.pl', 'autograf.pl', 'opoczta.pl', 'buziaczek.pl', 'adres.pl', 'amorki.pl', 'poczta.onet.eu')
0

Próbowałem tez tak, żeby było od razu na bazie:
[code]
$maile_onet = array('onet.pl', 'op.pl', 'poczta.onet.pl', 'onet.eu', 'onet.com.pl', 'vp.pl', 'spoko.pl', 'vip.onet.pl', 'autograf.pl', 'opoczta.pl', 'buziaczek.pl', 'adres.pl', 'amorki.pl', 'poczta.onet.eu');

$query = "SELECT * FROM maile WHERE ";
$a = 0;
foreach($maile_onet as $kay=>$wartosc)
{
if($a == 0)
{
$query .= "email NOT LIKE '%@$wartosc'";
}
else
{
$query .= " OR email NOT LIKE '%@$wartosc'";
}
$a++;
}
//echo $query;

$result = mysql_query($query);
	while($r = mysql_fetch_array($result)) 
	{
		$mails = $r['email'];
		echo $mails.'<br />';
	}

[/code]

Aby wykluczyć z listy wszystkie maile z onetu i dalej się pojawiają. Dlaczego?

1 użytkowników online, w tym zalogowanych: 0, gości: 1