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

Статус
В этой теме нельзя размещать новые ответы.

shamantc

ЗлОй ШаМан
Заблокирован
Регистрация
3 Ноя 2008
Сообщения
651
Реакции
188
  • Автор темы
  • Заблокирован
  • #1
Есть код
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
Что не так и почему возникает данная ошибка?
 
Конечно пишет, там одни ошибки дальше. Условие не так записываются. Я просто исправлю на правильное, но что-то я подозреваю придется весь код переписывать.
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
А если нет кода который выполняется при условии?
 
А зачем тогда это условие?!
Цитата из документации:
Конструкция if является одной из наиболее важных во многих языках программирования, в том числе и PHP. Она предоставляет возможность условного выполнения фрагментов кода.

Если не согласны, тогда, наверное, имеет смысл почитать про return(), continue, break. Разве что так...
 
Так будет вернее и логичнее:
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;
      }  
    }  
}   
?>
 
Боюсь, что все "ифы" тут пойдут лесом ибо в конце стоит
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
Если бы я знал что я тут преследую) хотя приследую я работоспособность это после deZend'a файл так перекосячило)
Исправил все ошибки, ТЕМА ЗАКРЫТА!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху