X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
> Помогите с регулярными выражениями
vitek_gagra
vitek_gagra
Topic Starter сообщение 17.8.2012, 0:17; Ответить: vitek_gagra
Сообщение #1


Здравствуйте, помогите с регулярными выражениями. Как сделать при регистрации проверку логина. Что бы можно было логин писать либо Русскими символами либо латинскими. Что бы запретить использование использование одновременного использования в нике разных языков.


--------------------
Отдых в Абхазии
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Pepper
Pepper
сообщение 17.8.2012, 0:33; Ответить: Pepper
Сообщение #2


Вам сюда http://www.maultalk.com/topic130282.html


Поблагодарили: (2)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
oldzas
oldzas
сообщение 17.8.2012, 8:01; Ответить: oldzas
Сообщение #3


Чуть ниже в этой ветке - человек преедлагал бесплатную помощь - напишите ему.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
serendipity
serendipity
сообщение 17.8.2012, 14:10; Ответить: serendipity
Сообщение #4


Что-то в таком духе:

if (preg_match('/[a-z]+/i', $input) && preg_match('/[а-я]+/i', $input)) {
// do smth
}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
simply_sash
simply_sash
сообщение 17.8.2012, 14:48; Ответить: simply_sash
Сообщение #5


serendipity, не прокатит хотя бы по тому, что в условии ИЛИ, а вы используете &&. Да и дважды вызывать preg_match() если можно проверить за один проход не разумно. Я бы сделал так:
<?php
    $user_login = $_GET["input"];
    if(preg_match("/((^[a-z]+$)|(^[а-я]+$))/u",$user_login))
    {
        echo $user_login;
    }
    else
    {
        echo "Некорректное имя пользователя";
    }
?>


Сообщение отредактировал simply_sash - 17.8.2012, 14:48
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
serendipity
serendipity
сообщение 17.8.2012, 15:08; Ответить: serendipity
Сообщение #6


(simply_sash @ 17.8.2012, 14:48) *
serendipity, не прокатит хотя бы по тому, что в условии ИЛИ, а вы используете &&. Да и дважды вызывать preg_match() если можно проверить за один проход не разумно.


Суть одна и та же, в вашем коде фактически вызов поиска будет происходить дважды при ложном результате первого поиска smile.gif

И да, мой код рабочий. Сначала засомневался, пришлось открывать редактор, чтобы проверить smile.gif

Сообщение отредактировал serendipity - 17.8.2012, 15:09
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
oldzas
oldzas
сообщение 17.8.2012, 15:23; Ответить: oldzas
Сообщение #7


Сильно не увлекайтесь) главное не забудьте сделать проверку на наличие такого же логина в бд, меня всегда радовала проверка на js что бы сократить время для пользователя.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
serendipity
serendipity
сообщение 17.8.2012, 15:26; Ответить: serendipity
Сообщение #8


(oldzas @ 17.8.2012, 15:23) *
Сильно не увлекайтесь) главное не забудьте сделать проверку на наличие такого же логина в бд, меня всегда радовала проверка на js что бы сократить время для пользователя.


А иногда разрешаю и такие логины. Только раскрашиваю латинские буквы в красный цветsmile.gif
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
simply_sash
simply_sash
сообщение 17.8.2012, 15:34; Ответить: simply_sash
Сообщение #9


(serendipity @ 17.8.2012, 14:08) *
пришлось открывать редактор
Не нужно открывать редактор, что бы понять, что оператор && требует, чтобы оба условия выполнялись! У вас в $input одновременно содержаться только латинские и только русские символы? К тому же в вашей регулярке нет символа начала (^) и символа конца строки ($), а это означает, что preg_match('/[a-z]+/i', $input) сработает, если в $input есть хотя бы одна буква из латинского алфавита в любом месте.
(serendipity @ 17.8.2012, 14:08) *
И да, мой код рабочий
Это не так
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
serendipity
serendipity
сообщение 17.8.2012, 15:45; Ответить: serendipity
Сообщение #10


(simply_sash @ 17.8.2012, 15:34) *
Это не так


<?php

$input1 = 'Hello ворлд';
$input2 = 'hello world';
$input3 = 'хелоу ворлд';

if (fail($input1)) print $input1 . ' > Ай-яй-яй!';
if (fail($input2)) print $input2 . ' > Ай-яй-яй!';
if (fail($input3)) print $input3 . ' > Ай-яй-яй!';

function fail($input) {
    return preg_match('/[a-z]+/i', $input) && preg_match('/[а-я]+/i', $input);
}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Помогите вспомнить рекламного бота Телеграм для обмена рекламой
0 Mixatraider 692 21.2.2024, 23:42
автор: Mixatraider
Открытая тема (нет новых ответов) Помогите рещить проблему с монитором.
Почему низкое разрешение при подключении монитора через displayport?
0 Levels 1695 11.12.2020, 0:48
автор: Levels
Открытая тема (нет новых ответов) Помогите кто нибудь получить партнерку Росбанк!
7 heisenberg_mw 2315 7.8.2020, 9:28
автор: heisenberg_mw
Открытая тема (нет новых ответов) Помогите найти тему пожалуйста
7 virtas 12398 24.7.2020, 17:02
автор: -JamesSmips-
Открытая тема (нет новых ответов) Помогите с поиском доноров
3 tehno_music 3331 4.11.2019, 17:15
автор: goblin78


 



RSS Текстовая версия Сейчас: 28.3.2024, 15:24
Дизайн