За последние 24 часа нас посетили 20287 программистов и 1652 робота. Сейчас ищут 1898 программистов ...

Регулярные выражения

Тема в разделе "Регулярные выражения", создана пользователем Валерий_paparazzi, 25 фев 2011.

  1. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Есть два документа - html и php
    Первый содержит форму для отзывы о работе сайта:

    <html>
    <head>
    <title>Автозапчасти от Боба - Обратная связь</title>
    </head>
    <body>

    <h1>Обратная связь</h1>

    <p>Пожалуйста, сообщите ваше мнение о нашей работе.</p>

    <form method=post action="processfeedback.php">
    Фамилия, имя: <br />
    <input type=text name="name" size=40><br />
    Адрес e-mail: <br />
    <input type=text name="email" size=40><br />
    Ваше мнение:<br />
    <textarea name="feedback" rows=5 cols=30>
    </textarea><br />
    <input type=submit value="Отправить мнение">
    </form>
    </body>

    ну и соответственно обработчик(проверяет,корректно ли введен имейл:
    <?php
    //создание коротких имен переменных
    $name = $_POST['name'];
    $email = $_POST['email'];
    //переменная для хранения комментарий клиента
    $feedback = $_POST['feedback'];

    //проверка ввода данных
    if (!eregi('^[a-zA-Z0-9_\-.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-.]+$',$email))
    {
    echo 'Недопустимый адрес электронной почты. Пожалуйста, '.'вернитесь на предыдущую страницу и попытайтесь еще раз.';
    exit();
    }
    //адрес по умолчанию
    $toaddress = [email='feedback@example.com]'feedback@example.com[/email]';
    //на какую почту отправляем письмо
    if (eregi('shop|customer service|retail',$feedback))
    $toadress = [email='retail@example.com]'retail@example.com[/email]';
    else if (eregi('deliver|fulfill',$feedback))
    $toadress = [email='fulfillment@example.com]'fulfillment@example.com[/email]';
    else if (eregi('bill|account',$feedback))
    $toadress = [email='account@example.com]'account@example.com[/email]';

    if (eregi('bigcustomer\.com',$email))
    $toadress = [email='bob@example.com]'bob@example.com[/email]';

    $subject = 'Обратная связь от Web - сайта';
    $mailcontent = 'ФИО клиента: '.$name. "\n"
    .'Email - адрес клиента'.$email."\n"
    ."Коментарии клиента: \n".$feedback."\n";
    $fromadress = 'From: webserver@example.com';


    $toadress = [email='feedback@example.com]'feedback@example.com[/email]';

    mail ($toadress,$subject,$mailcontent,$fromadress);


    ?>
    <html>
    <head>
    <title>Автозапчасти от Боба - Реакция передана</title>
    </head>
    <body>
    <h1>Реакция передана</h1>
    <p>Сообщение с вашей реакцией отправлено.</p>
    </body>
    </html>

    Cоотвественно ввожу данные для проверки:
    Пожалуйста, сообщите ваше мнение о нашей работе.
    Фамилия, имя:
    Valera_Pashkovec
    Адрес e-mail:
    valera@ukr.net
    Ваше мнение:
    Its great!

    В итоге выдает все время
    Warning: eregi(): REG_ERANGE in C:\www\tm\processfeedback.php on line 28 Недопустимый адрес электронной почты. Пожалуйста, вернитесь на предыдущую страницу и попытайтесь еще раз.
    Не могу понять,почему так?Неправильно работают регулярные выражения или как?
     
  2. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    ereg убрали, пора его заменить на preg, вот тогда и поговорим:)
     
  3. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    <?=RPG?>
    синтаксис тот же?насколько я знаю, preg - это перл совместимая функция, а я POSIX использую
     
  4. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Исправил ereg на preg_match, в итоге пишет:
    Warning: preg_match(): No ending delimiter '^' found in C:\www\tm\processfeedback.php on line 9 Недопустимый адрес электронной почты. Пожалуйста, вернитесь на предыдущую страницу и попытайтесь еще раз.
     
  5. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Ну было бы естественно хотя бы в руководстве пхп на мануал по функции взглянуть)) Там есть отличие: нужно выражение внутри / заключать вот так: '/[a-z]+/'
     
  6. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    <?=RPG?>
    Спасибо,заключил в слеши,заработало(ошибся в том,что не там слеш поставил)