Проверка на корректность логина

1. Николай (03.12.2012 / 19:47)
Вот проверяю логин на корректность, чето не верно,,. Всеровно пропускает разные символы... :-), тоесть логин должен быть русским или английским с цифрами и без спец символов
вот код: в чем ошибка?

<?php
session_start();
$login='Рускийk';
class sintx{
public static $ru;
public static $en;

public static function sintxRu($login){
self::$ru=$login;

if(!preg_match("/^[А-Яа-я0-9]{1,15}$/", self::$ru)){
$_SESSION['errorru']='errorRU';
}
}

public static function sintxEn($login){
self::$en=$login;
if($_SESSION['errorru']==errorRU){
if(!preg_match("/^[A-Za-z0-9]{1,15}$/", self::$en)){
$error='Не коректный логин';
exit();
}
}
}
}
sintx::SintxRu($login);
sintx::SintxEn($login);
?>

2. Apeccc (04.12.2012 / 01:09)
Зачем такие велосипеды???
^([A-Za-z][A-Za-z0-9 ]+|[А-ЩЭ-ЯЁа-щэ-яё][А-ЯЁа-яё0-9 ]+)$


3. Сергей (04.12.2012 / 01:31)
Автор,попробуй preg_match_all и без русских букв.

4. Nu3oN (04.12.2012 / 03:43)
3. LETGAM, аху.......ть! нахрена?
Тут что, текст в 1000 символов?)))))))
З.ы
<?php
preg_match('#[^0-9а-Я0-9]#u', self::$en)


5. Петр (04.12.2012 / 08:53)
"логин должен быть русским или английским с цифрами и без спец символов" -
<?php preg_match('/^(?:[a-z0-9]{1,15}|[а-яё0-9]{1,15})$/iu', $login); ?>


6. shilo (06.12.2012 / 05:27)
Какой вообще смысл делать это классом?

7. Hermes (08.12.2012 / 16:49)
[А-Яа-я0-9] не будет работать без русской локали
<? if(!preg_match("/^[А-Яа-я0-9]{1,15}$/", self::$ru)) ?>

Нужно заменить на:
<? if(!preg_match("/^[".chr(0x7F)."-".chr(0xff)."_-]+$/", self::$ru)) ?>

Добавлено через 00:36 сек.
6. shilo, Ну как это какой, больше нагрузка, это же так прекрасно )

8. Петр (09.12.2012 / 09:57)
Hermes
[А-Яа-я0-9] не будет работать без русской локали
<? if(!preg_match("/^[А-Яа-я0-9]{1,15}$/", self::$ru)) ?>

Нужно заменить на:
[code]
<? if(!preg_match("/^[".chr(0x7F)."-".chr(0xff)."_-]+$/", self::$ru)) ?>
Интересно, в какой версии PCRE для PHP нет русской локали в UTF-8 - может предпочтительнее использовать эту кодировку? Опять же, промежуток с 0x7F до 0xFF захватывает не только кириллицу, а, например, ±, ®, ›, ћ, ¦, “, ’, §, «, поэтому стоит начинать с 0xC0.

URL: https://visavi.net/topics/35600