Подскажите в чем ошибка

Тема в разделе "PHP", создана пользователем shamantc, 16 июн 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. shamantc

    shamantc ЗлОй ШаМан

    Заблокирован
    Регистр.:
    3 ноя 2008
    Сообщения:
    655
    Симпатии:
    184
    Есть код
    PHP:
      function validnick ($Nick)
      {
        
    $cfg config ('NickRusLat''NickNum''NickSym');
        if (
    $cfg['NickRusLat'])
        {
          if (
    preg_match ('/[a-z]+/i'$Nick))
          {
            ( OR 
    preg_match ('/[а-яё]/i'$Nick));
          }
        }

        ( OR (
    $cfg['NickNum'] AND preg_match ('/[0-9]+/i'$Nick)));
        return !((
    $cfg['NickSym'] AND preg_match ('/[^a-zа-яё0-9 _]+/i'$Nick)) OR preg_match ('/[-%#^;,<>\\/\\\\"\'`]/'$Nick));
      }
    Пишет ошибку в этой строке:
    PHP:
    ( OR preg_match ('/[а-яё]/i'$Nick));
    Parse error: syntax error, unexpected T_LOGICAL_OR in /home/user/data/www/mydomain.ru/include/lat.inc on line 373
    Что не так и почему возникает данная ошибка?
     
  2. nehidd

    nehidd Постоялец

    Регистр.:
    24 мар 2008
    Сообщения:
    145
    Симпатии:
    51
    Конечно пишет, там одни ошибки дальше. Условие не так записываются. Я просто исправлю на правильное, но что-то я подозреваю придется весь код переписывать.
    PHP:
    <?php 
     
    function validnick ($Nick
      { 
        
    $cfg config ('NickRusLat''NickNum''NickSym'); 
        if (
    $cfg['NickRusLat']) 
        { 
          if (
    preg_match ('/[a-z]+/i'$Nick) OR preg_match ('/[а-яё]/i'$Nick) OR ($cfg['NickNum']) AND (preg_match ('/[0-9]+/i'$Nick))) 
          { 
             
    //код, который выполняется при условии
          

        } 
        return !((
    $cfg['NickSym'] AND preg_match ('/[^a-zа-яё0-9 _]+/i'$Nick)) OR preg_match ('/[-%#^;,<>\\/\\\\"\'`]/'$Nick)); 
      }  
    ?>
     
  3. shamantc

    shamantc ЗлОй ШаМан

    Заблокирован
    Регистр.:
    3 ноя 2008
    Сообщения:
    655
    Симпатии:
    184
    А если нет кода который выполняется при условии?
     
  4. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    А зачем тогда это условие?!
    Цитата из документации:
    Если не согласны, тогда, наверное, имеет смысл почитать про return(), continue, break. Разве что так...
     
  5. Hafner

    Hafner Постоялец

    Регистр.:
    9 июл 2008
    Сообщения:
    79
    Симпатии:
    30
    Так будет вернее и логичнее:
    PHP:
    <?php  
    function validnick ($Nick) {  
        
    $cfg config ('NickRusLat''NickNum''NickSym');  
        if (
    $cfg['NickRusLat'])  
        {  
          if (
    preg_match ('/[^a-zа-яё0-9 _]+/i'$Nick) AND ($cfg['NickNum'] OR $cfg['NickSym']) AND !(preg_match ('/[-%#^;,<>\\/\\\\"\'`]/'$Nick)))  
          {  
             return 
    TRUE;
          }  
        }  
    }   
    ?>
     
  6. jo0o00nyy

    jo0o00nyy Постоялец

    Регистр.:
    12 май 2010
    Сообщения:
    65
    Симпатии:
    27
    Боюсь, что все "ифы" тут пойдут лесом ибо в конце стоит
    PHP:
     return !(($cfg['NickSym'] AND preg_match ('/[^a-zа-яё0-9 _]+/i'$Nick)) OR preg_match ('/[-%#^;,<>\\/\\\\"\'`]/'$Nick)); 
    Думаю, что ответ найдется быстрее если опишите какую логику при валидности ника вы здесь преследовали. Точно угадать тяжело, могу предположить, что ф-я config возвращает типы разрешенных наборов символов, которые можно использовать в нике и как вариант попробуйте это
    PHP:
    function validnick ($Nick) { 
    $cfg config ('NickRusLat''NickNum''NickSym');
    $pattern '';
    $result false;
    if (
    $cfg['NickRusLat']) $pattern .= 'a-zа-яё';
    if (
    $cfg['NickNum']) $pattern .= '0-9';
    if (
    $cfg['NickSym']) $pattern .= ' _';
    if (
    $pattern != '' && preg_match('/^[' $pattern ']+$/i'$Nick) )
    $result true;
    ///могут быть еще проверки
    return $result;
    }
     
  7. shamantc

    shamantc ЗлОй ШаМан

    Заблокирован
    Регистр.:
    3 ноя 2008
    Сообщения:
    655
    Симпатии:
    184
    Если бы я знал что я тут преследую) хотя приследую я работоспособность это после deZend'a файл так перекосячило)
    Исправил все ошибки, ТЕМА ЗАКРЫТА!
     
Статус темы:
Закрыта.