Sprawdź, czy ciąg znaków jest adresem e-mail w PHP
Próbuję wykonać zapytanie SQL, ale muszę jakoś sprawdzić, czy wartością jest adres e-mail. Potrzebuję sposobu, aby sprawdzić, czy {[2] } jest adresem e-mail, ponieważ mam wartości użytkownika, takie jak ta w mojej tabeli.
test
test2
[email protected]
[email protected]
test392
[email protected]
I tak dalej...
Muszę to zrobić tak $useremail
sprawdza $user
, aby znaleźć, czy to adres e-mail. Więc mogę zaktualizować wartości, WHERE user=test OR [email protected]
, itp.
$user = strtolower($olduser);
$useremail = "";
mysql_query("UPDATE _$setprofile SET user=$sn, fc=$fc WHERE user='$user' OR user='$useremail");
11 answers
Nie jest to świetna metoda i nie sprawdza, czy e-mail istnieje, ale sprawdza, czy wygląda jak e-mail z rozszerzeniem @ i domeny.
function checkEmail($email) {
$find1 = strpos($email, '@');
$find2 = strpos($email, '.');
return ($find1 !== false && $find2 !== false && $find2 > $find1 ? true : false);
}
$email = '[email protected]';
$check = checkEmail($email);
if ( $check ) {
echo $email . ' looks like a valid email.';
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-25 20:55:35
Bez wyrażeń regularnych:
<?php
if(filter_var("[email protected]", FILTER_VALIDATE_EMAIL)) {
// valid address
}
else {
// invalid address
}
?>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-12 22:45:41
Najprostszym podejściem jest użycie wyrażenia regularnego do sprawdzania adresów e-mail, chociaż istnieje pewna rozbieżność co do tego, jak dokładne może to być. Proces ten jest szczegółowo omówiony tutaj:
Używanie wyrażenia regularnego do weryfikacji adresu e-mail
Możesz użyć wyrażenia regularnego w MySQL, aby wybrać z bazy danych na podstawie wyrażenia regularnego:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:03:08
Możesz użyć wyrażeń regularnych, aby zweryfikować swój łańcuch wejściowy, aby sprawdzić, czy pasuje do adresu e-mail:
<?php
$email = "[email protected]";
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
echo "Valid email address.";
}
else {
echo "Invalid email address.";
}
?>
Od: http://www.totallyphp.co.uk/code/validate_an_email_address_using_regular_expressions.htm
EDIT : aby uzyskać dokładniejsze wyrażenia, zapoznaj się z Travis answer na to pytanie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:26
Ta funkcja is_email () da Ci konkretną odpowiedź, czy łańcuch jest prawidłowym adresem e-mail, czy nie. O ile mi wiadomo, żadne inne rozwiązanie nie zrobi tego z takim samym poziomem uprawnień.
Jeśli dobrze rozumiem przykład, użyłbyś go w ten sposób
$user = strtolower($olduser);
$useremail = (is_email($user)) ? $user : '';
Wbudowana funkcja PHP jest niekompletna. Jestem głównym autorem is_email()
, więc dmucham tutaj na własną trąbkę, ale włożyłem w to wiele pracy, aby nikt inny nie musiał nigdy więcej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-21 17:46:02
Używam tej funkcji od wielu lat na setkach witryn. Prawdopodobnie nie jest idealny, ale nigdy nie miałem skargi na fałszywe negatywy (lub pozytywy): {]}
function validate_email($email) {
return (preg_match("/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/", $email) || !preg_match("/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/", $email)) ? false : true;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-12 22:49:16
$user_email = "[email protected]";
function isEmail($user) {
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
return true
} else {
return false
}
}
if (isEmail($user_email)) {
// email is valid, run the query
mysql_query("UPDATE _$setprofile SET user=$sn, fc=$fc WHERE user='$user' OR user='$user_email");
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-12 22:46:15
Ponieważ każdy zamieszcza swoje Wyrażenie regularne, oto moje:
^((([\w+-]+)(.[\w+-]+)*)|(\"[^(\|\")]{0,62}\"))@(([a-zA-Z0-9-]+.)+([a-zA-Z0-9]{2,})|[?([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})(.([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})){3}]?)$
Zgodnie z moją najlepszą wiedzą, obsługuje wszystko w specyfikacji RFC, w tym wiele rzeczy, których większość ludzi zwykle nie zawiera.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-12 22:54:58
Oprócz wszystkich sugestii regex, które w większości nie obsługują wszystkich dostępnych TLD (w tym na przykład .info
i .museum
) oraz nadchodzącej decyzji ICANN o zezwoleniu na Chiński i arabski w adresach URL (które pozwoliłyby [a-z]
i \w
zawieść), dla których następujące bardziej ogólne regex jest wystarczające
([^.@]+)(\.[^.@]+)*@([^.@]+\.)+([^.@]+)
Chciałbym również wspomnieć, że robienie WHERE user=test OR [email protected]
jest zbyt podatne na błędy. Lepiej użyć autogenerowanego PK w tabeli i użyć go w klauzuli WHERE
.
I don ' t really see wartość strict, long i unreadable mailregexes zgodna ze specyfikacją RFCxxxx. Najlepszym sposobem jest wysłanie wiadomości z linkiem z kluczem aktywacyjnym do użytkownika końcowego, aby potwierdzić adres e-mail. Poinformuj o tym również w formularzu. Jeśli to konieczne, pozwól użytkownikowi wpisać adres e-mail dwa razy, tak jak w przypadku haseł.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-12 23:06:38
if(filter_var($email, FILTER_VALIDATE_EMAIL))
{
echo 'This is a valid email address.';
echo filter_var($email, FILTER_VALIDATE_EMAIL);
//exit("E-mail is not valid");
}
else
{
echo 'Invalid email address.';
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-07 13:03:24
$user_email = "email@gmailcom";
function isEmail($email) {
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
return true;
} else {
return false;
}
}
if (isEmail($user_email)) {
// email is ok!
} else {
// email not ok
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-23 19:40:17