[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как разрешить только обпределённые символы?
VoLk88
Здравствуйте! Прошу помощи с регулярками!
Нужно чтобы ник на сайте был только из букв, символов _-+= и пробела, а также чтобы не смешивались буквы латиницы и кириллицы, вроде с последним разобрался( preg_match("#[a-z]+#i", $_POST[name]) && preg_match("#[а-я]+#i", $_POST[name]) ), а вот с тем, чтобы другие символы кроме описанных выше в нике только были я прям понять не могу что сделать.



Спустя 19 часов, 31 минута, 11 секунд (29.01.2010 - 12:28) VoLk88 написал(а):
делов на минуту, просто колом я(

Спустя 10 минут (29.01.2010 - 12:38) DedMorozzz написал(а):
[a-zA-ZА-Яа-я_-+= ]+ и собсно всё

Спустя 2 минуты, 54 секунды (29.01.2010 - 12:41) twin написал(а):
<?php

if(!preg_match("#^[a-z_+=-]|[а-яё_+=-]+$#i", $_POST['name']))
echo 'no';
else
echo 'yes';

Спустя 2 минуты, 54 секунды (29.01.2010 - 12:44) DedMorozzz написал(а):
А поечему без больших букв? И в промежуток "а-я" буква ё не входит? huh.gif

Спустя 2 минуты, 45 секунд (29.01.2010 - 12:47) VoLk88 написал(а):
Цитата (DedMorozzz @ 29.01.2010 - 18:38)
[a-zA-ZА-Яа-я_-+= ]+ и собсно всё

Срабатывает, но выскакивает это:
Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 15 in Z:\home\besit.org.ru\www\registration.php on line 98

Спустя 1 минута, 1 секунда (29.01.2010 - 12:48) VoLk88 написал(а):
Цитата (twin @ 29.01.2010 - 18:41)
<?php

if(!preg_match("#^[a-z_+=-]|[а-яё_+=-]+$#i", $_POST['name']))
echo 'no';
else
echo 'yes';

пропустил name!name

Спустя 1 минута, 8 секунд (29.01.2010 - 12:49) DedMorozzz написал(а):
значит пробел надо как-то иначе записать. Ща поищу

Спустя 2 минуты, 59 секунд (29.01.2010 - 12:52) VoLk88 написал(а):
elseif (!preg_match("#[a-zA-ZА-Яа-я_-+= ]+#", $_POST['name'])) 
{
echo "<font color=ff0000>В нике недопустимый символ!</font>";
}

вот как я записываю

Спустя 39 секунд (29.01.2010 - 12:52) DedMorozzz написал(а):
[a-zA-Z_-+=\s]+[А-Яа-я_-+=\s]+ а так?

Спустя 2 минуты, 21 секунда (29.01.2010 - 12:55) VoLk88 написал(а):
Цитата (DedMorozzz @ 29.01.2010 - 18:52)
[a-zA-Z_-+=\s]+[А-Яа-я_-+=\s]+ а так?

Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 9 in Z:\home\besit.org.ru\www\registration.php on line 98

Спустя 6 минут, 3 секунды (29.01.2010 - 13:01) twin написал(а):
DedMorozzz
Там стит модификатор i, а значит регистр игнрируется. Буква Ё не входит в диапазон. С ней вообще веселая история. Она и в кодировках на последнем месте, после Я.

Дефис не на месте, потому и варнинг.

Хотя я тоже поспешил. Вот так надо:
<?php

if(!preg_match("#^[a-z_+=-\s]+$|^[а-яё_+=-\s]+$#iu", $_POST['name']))
echo 'no';
else
echo 'yes';

Спустя 5 минут, 25 секунд (29.01.2010 - 13:06) DedMorozzz написал(а):
в кодировке аски ll всё идёт с верхнего до нижнего регистра. скорее всего этот варнинг из-за тог очто снач описан нижний, далее верхний регистр, но как-то глупо это... попробуй "[A-Za-z_-+=\s]+[А-Яа-я_-+=\s]+" или "[A-z_-+=\s]+[А-я_-+=\s]+"
Что не так с дифисом? Кстати мб буква "а" русская, когда должна быть анл.

Спустя 3 минуты, 16 секунд (29.01.2010 - 13:09) VoLk88 написал(а):
twin
этот вариант помог, спасибо огромное!

DedMorozzz
Спасибо wink.gif

Мне очень много надо читать, раньше не сталкивался толком, а тут такая запинка. Если время свободное выпадет читать буду)
ещё раз спасибо большое всем, кто откликнулся

Спустя 35 минут, 23 секунды (29.01.2010 - 13:45) twin написал(а):
DedMorozzz
Цитата
Что не так с дифисом?

[A-Za-z_-+=\s]
получается диапазон. Отсюда и варнинг. Нужно или экранировать дефис или ставить последним.

Спустя 11 минут, 16 секунд (29.01.2010 - 13:56) twin написал(а):
И Ё ты зря игнорируешь. Кодировку я имел ввиду UTF-8, остальные даже за кодировки не считаю. Но она тут не причем. Буква Ё не входит в диапазон для регулярок, можешь проверить на досуге.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.