Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > !preg_match разрешить пробел


Автор: fleetboss 25.9.2009, 04:07
Как изменить код, чтобы скрипт разрешал русским буквам пробел? Для англ я тупо поставил в конце пробел или \s, но на русские буквы это не работает

Код
(!preg_match("/^[А-Яа-яЁёa-zA-Z ]+$/",$_POST['u_name']))

Код
(!preg_match("/^[А-Яа-яЁёa-zA-Z\s]+$/",$_POST['u_name']))


И можно как-то еще добавить сюда чтобы разрешал латышские буквы? šādī

Автор: NewDima 25.9.2009, 05:32
Цитата(fleetboss @ 25.9.2009,  11:07)
чтобы скрипт разрешал русским буквам пробел

Это что значит?


1. Используй ключи i (для разных регистров)
2. Ключ u для символов, относящихся к юникоду

Автор: fleetboss 25.9.2009, 05:52
Например:

Andrej Fedorovich - разрешает
Андрей Федорович - пишет что ошибка (пробел)

Автор: NewDima 25.9.2009, 06:24
Код

  var_dump(preg_match('#[a-zа-я\s]+#iu', 'Andrej Fedorovich'));
  var_dump(preg_match('#[a-zа-я\s]+#iu', 'Андрей Федорович'));

вывод?
Цитата

int(1)
int(1)

Автор: Strilo4ka 25.9.2009, 14:57
можно просто в регулярном выражении поставить пробел надатием елавишы пробел вот так напримео #^[a-z0-9 ]$# если включить какой то модификатор в конце не помню то пробел обычным нажатием клавишы игнорироваться(это в режыме коментариев )

Добавлено через 1 минуту и 38 секунд
\s - если вы в условии поиска поставите друг за другом символ обратного слеша, а после него сразу букву s, то таким образом вы опишите либо пробел, либо символ табуляции. Конечно в условии поиска можно поставить пробел так, как вы его обычно ставите на письме, но запись [a-z\s] будет намного понятнее и читабельней чем [a-z ], с первого взгляда видно, что в первый символьный класс входит пробел, а вот со вторым символьным классом надо присмотреться, а так как регулярные выражения итак представляют для многих набор значков, то пропустить пробел, поставленный таким образом будет очень просто. Внимательно используйте этот спецсимвол, так в дополнении к тому, что он совпадает с пробелом и табулятором, он совпадет также с символом новой строки.

Автор: fleetboss 25.9.2009, 18:20
Цитата(NewDima @ 25.9.2009,  06:24)
Код

  var_dump(preg_match('#[a-zа-я\s]+#iu', 'Andrej Fedorovich'));
  var_dump(preg_match('#[a-zа-я\s]+#iu', 'Андрей Федорович'));

Этот код вообще не катит, так как он разрешает любые символы и цифры, если не заметили у меня стоит !preg_match

Пробывал намудрить.... написал такое, но тоже выдает ошибку... 

Код

elseif ((!preg_match("#^[A-Za-z\s]$#",$_POST['u_name'])) || (!preg_match("#^[А-Яа-яЁё\s]$#",$_POST['u_name']))){ $error_line = "Разрешены только русские и английские буквы!\n"; }


может кто написать как правельно будет выгледить код, который будет разрешать пробелы и в русских и латинских буквах?

Код
(!preg_match("/^[А-Яа-яЁёa-zA-Z\s]+$/",$_POST['u_name']))

Выше написаный код разрешает пробел в форме, НО только для английских букв...

Автор: Strilo4ka 25.9.2009, 22:26
Код

<?php

$name='абцд а';
if (preg_match("/^[А-Яа-яЁёa-zA-Z\s]+$/",$name))
{
echo "русские символы + пробел<br>";
}

$name2='abcc d';
if (preg_match("/^[А-Яа-яЁёa-zA-Z\s]+$/",$name2))
{
echo "латинские символы + пробел<br>";
}

?>


Рузультат в браузере:
Код

русские символы + пробел
латинские символы + пробел


Автор: fleetboss 26.9.2009, 00:56
Ваш скрипт показывает что прошел только второй код, для русских букв не прошел (ничего не выдал). Может проблема в настройках сервера?

Еще раз пишу у меня стоит проверка на разрешение только русский, латинских букв и пробела ) Надо добавить пробел для русской клавиатуры, для латинской работает.
Если ввести любой другой символ - сработает скрипт. Он должен разрешать только рус/лат буквы и пробел для обоих клавиатур :(

Код
if (!preg_match("/^[А-Яа-яЁёa-zA-Z\s]+$/",$_POST['u_name'])){ $error_line = "Разрешены только русские и английские буквы!\n"; }


Автор: Strilo4ka 26.9.2009, 01:07
где то в книге встречал короче можно устанавливать локаль (типа язык)... ну не помню поищи серйозно, а то влом лезть !!!

Добавлено через 1 минуту и 54 секунды
у меня работает установленый денвер... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)