За последние 24 часа нас посетили 50184 программиста и 1689 роботов. Сейчас ищут 1152 программиста ...

поиск в переменной определенного email

Тема в разделе "PHP для новичков", создана пользователем serj011, 14 сен 2012.

  1. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    подскажите как написать правильно... если в переменную $email попадает адрес от 1@post.ru до 1000@post.ru, то переменная должна равняться допустим admin@post.ru.

    у меня уже была такая задача, я ее решал так...
    if ($email == [email='1@post.ru]'1@post.ru[/email]' or $email == [email='2@post.ru]'2@post.ru[/email]' or $email == [email='3@post.ru]'3@post.ru[/email]' и т.д.....) $email = [email='admin@post.ru]'admin@post.ru[/email]';

    у меня просто было всего 20 адресов, а как написать по людски?)))
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    пример переменной $email в студию!
     
  3. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Dmitriy A. Arteshuk, нету ни какого примера))) я все написал, или ты не понял вопрос и я плохо расписал...

    в $email из формы прилетает email адрес... дальше проверяем если он равняеться адресам в диапазоне от 1@post.ru до 1000@post.ru, то в переменную $email заносим $email = [email='admin@post.ru]'admin@post.ru[/email]';... если же нет, то ничего не делаем...

    опять же дублирую свой рабочий код
    if ($email == [email='1@post.ru]'1@post.ru[/email]' or $email == [email='2@post.ru]'2@post.ru[/email]' or $email == [email='3@post.ru]'3@post.ru[/email]' и т.д.....) $email = [email='admin@post.ru]'admin@post.ru[/email]';

    как написать его короче и правильнее, ведь адресов 1000, не перечислять же их все)
     
  4. Superk

    Superk Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    32
    Симпатии:
    0
    for ($i=1;$i<=1000;$i++){
    if ($email == $i.'@post.ru') {$email = [email='admin@post.ru]'admin@post.ru[/email]';break;}
    }
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А если пользователь введет 999@post.ru будет 999 итераций... многовато как-то...

    Можно например так... первое что пришло в голову :)

    Код (PHP):
    1. $mail = '20@post.ru';
    2.  
    3. $data = explode('@', $mail);
    4.  
    5. if($data[0] <= 1000 && $data[0] >0)
    6.  $mail = 'admin@post.ru';
    7.  
    8.  echo $mail;
    9.  
     
  6. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Спасибо работает вроде как нужно.
    Как это понять? Объясните? Что будет повторяться, когда и зачем?))))
     
  7. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Лучше покажу на примере :) Выполни этот код и ты сам все поймешь...

    Код (PHP):
    1. $email = '999@post.ru';
    2. for ($i=1;$i<=1000;$i++){
    3. echo "step_{$i}<br/>";
    4. if ($email == $i.'@post.ru') {$email = 'admin@post.ru';break;}
    5. }
    6.  
    7. echo $email;
    8.  
    Мой код не содержит цикла. Можешь его улучшить добавить проверку на число ну или еще что-то...
    Код (PHP):
    1. if($data[0] <= 1000 && $data[0] >0 && ctype_digit($data[0])) 
     
  8. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Может не до "корня", но понял...)

    да, проверка на число не помешает (ctype_digit($data[0]))... но есть большая недоработка в коде. как сделать так что бы была проверка на post.ru? т.е. если будет введено 20@yandex.ru, то все равно код сработает и выдаст admin@post.ru???
     
  9. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. if(ctype_digit($data[0]) && $data[0] <= 1000 && $data[0] > 0 && $data[1] === 'post.ru') 
     
  10. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    спасибо всем за помощь)