Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP/JavaScript: строка только в одной раскладке (рус/лат)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Sergeant

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте,
 
Не хочу изобретать велосипеда (который скорее всего окажется громоздким и ресурсоемким), наверняка, у кого-нибудь есть уже готовое решение, простое и быстрое. Ведь задачка-то несложная. Она в следующем:
 
Имеется некая строка, введенная в форму. Её надо проверить некой функцией. Положительным результат будет тогда, когда в строке будут присутствовать спецсимволы (#, @, ^, etc.) и символы какой-то одной раскладки - либо кириллицы, либо латиницы. При смешанном вводе функция возвращает FALSE.
 
Что скажете по этому поводу? Интересны оба решения - и клиентское, и серверное.

----------
Если вы спорите с идиотом,
Наверняка, он занимается тем же самым.

Всего записей: 1553 | Зарегистр. 06-08-2001 | Отправлено: 01:52 08-08-2004
Church



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sergeant
Что-то я не понял твое ТЗ... А вообще, это регулярными выражениями судя по всему надо проверять.... Объясни, в общем, получше.... Какие спецсимволы?

Всего записей: 1199 | Зарегистр. 05-09-2003 | Отправлено: 02:00 08-08-2004
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
if (preg_match ("/([A-Z]+)(.*?)([А-Я]+)/i"))
   print "false";
else
   print "true";
 
делал по памяти, но помоему так.

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 03:29 08-08-2004
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xntx, не правильно, потому что возвращает true тогда, когда первый(е) символ латинский, а последний(е) - кириллический - при этом что в промежутке - по барабану.
Sergeant, читай
PCRE
Регулярные выражения, часть I
Регулярные выражения, часть II

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 10:54 08-08-2004 | Исправлено: SiMM, 10:55 08-08-2004
Sergeant

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SiMM,
Всё-таки предлагаешь заняться разработкой велосипеда? :gigi:
 
Я вот подумал.. а не быстрее будет использовать строковые функции? Скажем, сделать два массива для символов каждого алфавита. Затем брать строку и искать первый символ любого из массива. Если найден латинский, пробивать на присутствие кириллических. И наоборот, естественно.
 
Что скажете о такой идее? Не даром ведь говорят, что от регулярных выражений надо избавляться там, где это оправдано.
 
Church,
Можно и без спецсимволов, хотя бы с буквами разобраться бы.

----------
Если вы спорите с идиотом,
Наверняка, он занимается тем же самым.

Всего записей: 1553 | Зарегистр. 06-08-2001 | Отправлено: 13:00 08-08-2004
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Всё-таки предлагаешь заняться разработкой велосипеда?
При чём здесь велосипед? Я предлагаю один раз изучить и больше не спрашивать - ибо пригодится. Кроме того, я надеюсь, что ты не пишешь программы из надыбанных из разных мест кусочков, непонимая их сути, а затем по малейшему сообщению от парсера или же от скрипта не бежишь на форум за вопросом.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 13:46 08-08-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sergeant

Цитата:
 Интересны оба решения - и клиентское, и серверное.

 
Спецсимволы, а также диакритику, переводы строк и т. п. все не упомнишь...
 
А если от противного подойти... к примеру, на javascript:

Код:
<script type="text/javascript">
<!--
var d=document
 
function checkLng(){
        if(/^[^a-z]+$/i.test(d.F.txt.value)) alert('нет латиницы')
        else if (/^[^а-я]+$/i.test(d.F.txt.value)) alert('латиница')
        else alert('всё в куче')
        }
 
//-->
</script>
<form name=F action="">
<textarea name="txt" style="width:80%;height:100px"></textarea><br>
<input type="button" value="проверить текст" onClick="checkLng()">
</form>

 
Оно же:
[include]Svarga/raskladka.inc.html[/include]


----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 16:13 08-08-2004 | Исправлено: Svarga, 16:13 08-08-2004
Sergeant

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga,
Спасибо :) в яваскрипте я совсем дуб.  
 
А серверное решение у меня нашлось примерно такое:
Код:
if (!preg_match("/^[a-z0-9]$|^[а-яА-ЯёЁ0-9]$/is",$str)) {return FALSE;}

 
Добавлено
Да, к вопросу о преимуществе строковых функций. Строка предполагается небольшой по длине (в районе 30 символов), так что прирост в скорости, если он и будет, будет небольшим. Посему вполне можно обойтись регулярными выражениями.

----------
Если вы спорите с идиотом,
Наверняка, он занимается тем же самым.

Всего записей: 1553 | Зарегистр. 06-08-2001 | Отправлено: 01:12 09-08-2004
rw1000



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть ли готовый JS файл для конвертации в транслит?

Всего записей: 16 | Зарегистр. 17-06-2006 | Отправлено: 21:01 28-01-2007
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP/JavaScript: строка только в одной раскладке (рус/лат)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.B0ard 2000-2026

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru