На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
  
    > Не пашет preg_match или руки кривые? , PHP
      Имеем код:
      ExpandedWrap disabled
        $aaa = "asd123";
        if ( preg_match ("/([a-z0-9])*/i", $aaa))
        {
             print "OK";
        }
        else
        {
             print "BAD";
        }

      выдаёт OK, как впринципе и нужно. Дальше:
      ExpandedWrap disabled
        $aaa = "asd|1\a$@&$aa23";
         
        if ( preg_match ("/([a-z0-9])*/i", $aaa))
        {
             print "OK";
        }
        else
        {
             print "BAD";
        }

      тоже выдаёт ОК, хотя кроме букв и цифр куча посторонних символов.
      Не хотят работать регулярные выражения или это я идиот?
        Все правильно. Условие "совпадать 0 или более раз" (*) выполняется. Оно будет выполняться даже тогда, когда в строке буквами и пахнуть не будет. А вот если сказать "/^([a-z0-9])*$/i", то все будет, как надо -- потребует букв и цифр от начала до конца строки.
          Ho Im, блин, ну я и ступил... огромный Сэнкс!
            Ho Im, тогда уж условие !preg_match("/[^a-z0-9]/si", $aaa) - как минимум, должно быть пошустрее
            /me поздно заметил, что * неуместен :)
            Сообщение отредактировано: SiMM -
              Ну, это когда стремимся к Совершенству. А когда просто исправляем ошибочку -- имхо хватит и этого. (Делает copy/paste в рабочую тетрадь)
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0177 ]   [ 14 queries used ]   [ Generated: 18.05.24, 12:10 GMT ]