function _invite_get_emails in Invite 5.2
Same name and namespace in other branches
- 5 invite.module \_invite_get_emails()
- 6.2 invite.module \_invite_get_emails()
- 7.2 invite.module \_invite_get_emails()
Extract valid e-mail addresses from a string.
E-mails must be separated by newlines or commas. E-mails are allowed to include a display name (eg. Some Name <foo@example.com>). Invalid addresses are filtered out and stored in a session variable for re-display.
Parameters
$string: The string to process. Recognized delimiters are comma, NL and CR.
Return value
Array of valid e-mail addresses.
1 call to _invite_get_emails()
- invite_form_validate in ./
invite.module - Forms API callback; validate submitted form data.
File
- ./
invite.module, line 921 - Allows your users to send and track invitations to join your site.
Code
function _invite_get_emails($string) {
$valid_emails = $failed_emails = array();
$user = '[a-zA-Z0-9_\\-\\.\\+\\^!#\\$%&*+\\/\\=\\?\\`\\|\\{\\}~\']+';
$domain = '(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.?)+';
$ipv4 = '[0-9]{1,3}(\\.[0-9]{1,3}){3}';
$ipv6 = '[0-9a-fA-F]{1,4}(\\:[0-9a-fA-F]{1,4}){7}';
$rx = "/({$user}@({$domain}|(\\[({$ipv4}|{$ipv6})\\])))>?\$/";
$emails = array_unique(split("[,\n\r]", $string));
foreach ($emails as $email) {
$email = preg_replace('/^.*<(.*)>$/', '${1}', trim($email));
if ($email) {
if (preg_match($rx, $email, $match)) {
$valid_emails[] = $match[1];
}
else {
$failed_emails[] = $email;
}
}
}
if (count($failed_emails)) {
$_SESSION['invite_failed_emails'] = serialize($failed_emails);
}
return $valid_emails;
}