Регулярное выражение и русские буквы в строке?

  • Автор темы Автор темы AlexX
  • Дата начала Дата начала

AlexX

Guest
Регулярное выражение и русские буквы в строке?

Не понимаю. Пишу
if (eregi("^[А-Яа-я]+$",$data))
а оно ноль эмоций на "asdfываFЯЧ".

И еще фигня:
Есть 2 функции - в одной я проверяю нет ли всяких там +, *, " и прочее, в другой проверяю на русские буквы
(не во всех строкахнужно избавлятся от русских букв).
Обе функии не работают -> стираю 2-ю -> первая работает как надо.

И как найти в eregi [, ], {, и }? Просто когда пишу \[\]\{\} выдает ошибку.

Спасибо.
 
Не понимаю. Пишу
if (eregi("^[А-Яа-я]+$",$data))
а оно ноль эмоций на "asdfываFЯЧ".
убери ^ и $ для совпадения либо добавь англ. буквы в класс, а так у тебя должна вся строка из русских букв состоять
 
Точно! Спасибо! Я туг в рег. выражениях.
А с такой странностью не сталкивался (про функции)?
 
function checksymbol($data){
//Проверка формы
$error=false;
if (ereg("[`!@#\$%^&*()\\;\",.'<>?/:;*+|=]",$data)){
$error=true;
}
return $error;
}
function checkrus($data){
$error=false;
if (eregi("[А-Яа-я]",$data)){
$error=true;
}
return $error;
}

Вторую стираю и все работает. Может глюки?
Как найти [, ], {, и }?
 
AlexX
в одной я проверяю нет ли всяких там +, *, "
а не лучше ли проверять есть ли "всё, кроме разрешённого"? ...поясняю....эта функция выдаст TRUE если есть неразрешённые явным образом символы
PHP:
function checksymbol($data) {
	if (preg_match('/[^a-zA-Z_0-9]+/i',$data)) return  TRUE;
	else return FALSE;	
}
echo checksymbol('abc_01');

Как найти [, ], {, и }?
так же как и остальное, только экранировать надо
 
korvin0

PHP:
$str = '{}]';
if(eregi('\[|\]|\{|\}',$str))  echo 'FOUND';
else echo  'NOT FOUND';
 
Сверху