2015-02-26 4 views
-1

Я пытаюсь создать сценарий litte php, который автоматически установит правильную опечатку при вставке адреса электронной почты в форму.Автоматически изменять опечатную ошибку адреса электронной почты

if (strpos($_POST["email"], "@hotmail.comm") !== false) { 
    $_POST["email"] = str_replace('@hotmail.comm', '@hotmail.com', $_POST["email"]); 
    goto end; 
} 
if (strpos($_POST["email"], "@homail.com") !== false) { 
    $_POST["email"] = str_replace('@homail.com', '@hotmail.com', $_POST["email"]); 
    goto end; 
} 
end: 

Когда я проверить это, все работает нормально для @ homail.com но когда я проверяю с @ hotmail.comm, электронной почты изменилось на @ hotmail.commm

Любая идея whis это идет не так с @ hotmail.comm?

С наилучшими пожеланиями,

Арье

+1

работает для меня. Кстати, вам не нужен ужасный goto's – DevDonkey

+0

@Arie, я проверил ваш код и набрал [email protected] Он работает нормально, как и ожидалось в конце. –

+0

@Arie, Пожалуйста, проверьте мой ответ на свое решение, сообщите мне, если у вас все еще есть проблемы! –

ответ

0

Это выглядит хорошо для меня, но goto, действительно? Присвоить $_POST? Нет!

Вы можете написать это короче и лучше:

$improvements = array('@hotmail.comm' => '@hotmail.com', 
         '@homail.com' => '@hotmail.com'); 

$emailAddress = str_replace(array_keys($improvements), 
          array_values($improvements), 
          $_POST["email"]); 

Очевидно, что список может быть расширен без добавления большого количества кода. Всегда старайтесь писать простой код.

0

@Arie, пожалуйста, проверьте ниже код для вашего решения.

$email = $_POST["email"]; 

if (strpos($email, "@hotmail.comm") !== false) { 
    $_POST["email"] = str_replace('@hotmail.comm', '@hotmail.com', $email); 
} 
if (strpos($email, "@homail.com") !== false) { 
    $_POST["email"] = str_replace('@homail.com', '@hotmail.com', $email); 
} 

echo $_POST["email"];die; 
Смежные вопросы