Cytat(wdev @ 12.11.2010, 16:36:48 )

Pamiętaj, że funkcja analizuje cały kod, a nie tylko to, co chcesz zobaczyć. Więc twój skrypt zamienia też link w atrybucie href elementu a. Jako rozwiązanie proponuję pozostawienie maili, po których następuje cudzysłów (czyli są w atrybucie href) lub </a> (czyli już mają swój link) nieruszonych.
$str = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})([^(</a>)|"])','<a href="mailto:\\1" class="white">\\1</a>', $str);
Jeżeli chcesz przypisać klasę white tym które są w znaczniku <a></a>, to wiesz, jak to zrobić

PS. POSIX jest zarzucany przez PHP. W 5.3 dostaniesz błąd E_DEPRECATED.
Super, o to chodziło.
Serwis jest z tych starszych, więc działa na nie najnowszej wersji PHP.
Wracam z problemem zamiany linków (już nie maili)
$strinl = 'od bawełna :<br />
<a href="http://www.zamotane.pl/image647">aaaaaaa7</a> </p>
<p>Termin wykonania 1-3- gruawełna :<br />
<a href="http://www.zamotane.pl/image_func.php?img=gfx/1a145bf62d7bf120aee119c0c0b749cd.jpg&lang=pl&prod_id=647">http://www.zamotane.pl/image_func.php?img=gfx/1a145bf62d7bf120aee119c0c0b749cd.jpg&lang=pl&prod_id=647</a> </p>
<p>Termin wykonania 1-3- grudnia.</p>dnia.</p>
step <a href="http://www.onet.pl/obrazki/obrazek.jpg" target="_blank">http://www.onet.pl/obrazki/obrazek.jpg</a> - <br /> odstep <a href="../../../obrazki/zdjecie.jpg">link</a> odstep <br /> <a href="mailto:test@test.pl">test@test.pl</a><br /> test2@test2.pl - odstep';
echo html_activate_links
($strinl);
przy
$str = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_;\+.~#?&//=]+)', '<a href="\\1" class="white">\\1</a>', $str);
robi się sieczka
<a href="<a href="http://www.zamotane.pl/image647" class="white">http://www.zamotane.pl/image647</a>">aaaaaaa7</a>
Gdy jednak zamienię to na
$str = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_;\+.~#?&//=]+)([^(</a>|"]))', '<a href="\\1" class="white">\\1</a>', $str);
to nie łapie zwykłych tekstowych linków typu
http://www.onet.pl/obrazki/obrazek.jpg