En lidt anden fremgangsmåde en @T0M's er at opdele den pågældne tekst til ord, ved at opdele teksten ved hvert mellemrum, hvorefter man looper tekstens ord igennem og tjekker dem med
filter_var()-funktionen.
Lad mig prøve komme med et kode eksemple:
<?php
// 1. Funktionen
function get_emails($txt) {
// klargøre array til emails
$mail = array();
// i tilfælde af email står sidst på en linje i en flere linjet tekst, laver vi alle linjeskift om til mellemrum
$txt = str_replace("\r", "", $txt); // fjerner eventuelle 'carriage returns'
$txt = str_replace("\n", " ", $txt);
// opdeler tekst i ord
$part = explode(" ", $txt);
// looper ordene igennem
foreach($part as $ord) {
// tjekker om ordet er en mail med filter_var() funktionen
if(filter_var($ord, FILTER_VALIDATE_EMAIL))
{
// ordet blev godkendt som en mail, så vi tilføjer den til vores email-array
$mail[] = $ord;
}
}
// returnerer email-array
return $mail;
}
// 2. Brug af funktionen
$string = <<<EOL
Kaj kan kontaktes på email kaj@mydomain.dk
Bøje kan kontaktes på email boeje@mydomain.dk
EOL;
$mails = get_emails($string);
?>
*OBS*Det skal lige nævnes at PHP's filtrer ikke er specielt glade for special tegn som æ, ø og å i unicode endnu - har dog ikke testet det med iso-encoding.
Håber ovenstående kan bruges :-)