Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.11.2009, 12:36
Аватар для greatilya
Интернет-турист
Отправить личное сообщение для greatilya Посмотреть профиль Найти все сообщения от greatilya
 
Регистрация: 01.08.2008
Сообщений: 516

Проверьте регулярку
Опять я с регуляркой лезу....
Просьба проверить регулярку, написана она под РНР, но как я понимаю особых отличий нет.
function in_russian($text)
{
	$text = ereg_replace("[^".chr(0x7F)."-".chr(0xff)."\-]", "", $text);
	return $text;
}

function in_russian_fio($text)
{
	$text = ereg_replace("[^".chr(0x7F)."-".chr(0xff)."\.\ \-]", "", $text);
	return $text;
}

В function in_russian нужно чтобы остались только русские буквы и "-".
В function in_russian_fio нужно чтобы остались только русские буквы, пробелы, точки и "-".

Посмотрите пожалуйста, не допустил ли я ошибок? Очень нужно чтоб эти функции работали 100% правильно, сам то их проверил, вроде результат правильный.
__________________
VPS от 175 рублей (есть скидки 15% писать в ПМ) Анализ рынка VPS серверов
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен.
Альберт Эйнштейн
Ответить с цитированием
  #2 (permalink)  
Старый 18.11.2009, 13:00
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Раюотать -- работает, но вот как быть с Юникодом?
Ответить с цитированием
  #3 (permalink)  
Старый 18.11.2009, 13:32
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Пробелы, точки и дефисы в символьном классе экранировать не надо (пробелы вообще никогда не надо). Точка автоматически перестает быть метасимволом в символьном классе, а дефис просто должен стоять на первом или на последнем месте.

Сообщение от e1f
но вот как быть с Юникодом?
'\x7F' || '\u007F'
Ответить с цитированием
  #4 (permalink)  
Старый 18.11.2009, 14:39
Аватар для greatilya
Интернет-турист
Отправить личное сообщение для greatilya Посмотреть профиль Найти все сообщения от greatilya
 
Регистрация: 01.08.2008
Сообщений: 516

Сообщение от e1f
но вот как быть с Юникодом?
Извиняюсь если скажу сейчас что-то глупое, но все-же:
страница у меня в кодировке cp1251
<meta http-equiv="Content-Type" content="text/html; charset=cp1251" />

кодировка по умолчанию у сервера тоже cp1251.
Откуда тогда взяться юникоду?
Как я понимаю символы юникода могут быть вставлены пользователем сайта в поля регистрации, и как я понимаю для этого им надо будет вставить эти символы специально извне. Но тогда регулярка вырежет этот юникод, чтоб не баловались....
Или юникод может попасть другим способом и тогда стоит доработать регулярку?
как я понял для юникода нужна доработка следующая:
$text = ereg_replace("[^".chr(0x7F)."-".chr(0xff)."\u007F-\u00FF-]", "", $text);

Хотя наверное что-то не так написал.
__________________
VPS от 175 рублей (есть скидки 15% писать в ПМ) Анализ рынка VPS серверов
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен.
Альберт Эйнштейн
Ответить с цитированием
  #5 (permalink)  
Старый 18.11.2009, 15:16
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Kolyaj,
а разве не '\u0430' вместо '\u007F'?
Ответить с цитированием
  #6 (permalink)  
Старый 18.11.2009, 15:22
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от greatilya
Извиняюсь если скажу сейчас что-то глупое, но все-же:
страница у меня в кодировке cp1251
Извинения приняты: внутри JS все в юникоде независимо от кодировки страницы.

Сообщение от e1f
а разве не '\u0430' вместо '\u007F'?
Если это код в cp1251, то да. Я для примера написал.
Ответить с цитированием
  #7 (permalink)  
Старый 19.11.2009, 07:02
Аватар для greatilya
Интернет-турист
Отправить личное сообщение для greatilya Посмотреть профиль Найти все сообщения от greatilya
 
Регистрация: 01.08.2008
Сообщений: 516

Еще раз извиняюсь за навязчивость:
Сообщение от Kolyaj
внутри JS все в юникоде независимо от кодировки страницы.
вот у меня в форме есть поле input, я его проверяю на JS только перед отправкой формы на необходимую длинну текста, на символы в JS я его не проверяю. Форма отправляется методом POST. Кодировки страниц и сервера - 1251. Далее я проверяю регуляркой на русские символы средствами РНР. Как я понимаю о юникоде при таком раскладе мне можно не беспокоиться и остаться на таком варианте
$text = ereg_replace("[^".chr(0x7F)."-".chr(0xff)."-]", "", $text);

Правильно?
__________________
VPS от 175 рублей (есть скидки 15% писать в ПМ) Анализ рынка VPS серверов
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен.
Альберт Эйнштейн
Ответить с цитированием
  #8 (permalink)  
Старый 19.11.2009, 12:04
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

В JS все в юникоде, в PHP все приходит в той кодировке, в которой страница.

Юникод, кстати, это не кодировка, а таблица символов, у которой есть различные кодировки, в том числе UTF-8.

Сообщение от greatilya
Как я понимаю о юникоде при таком раскладе мне можно не беспокоиться и остаться на таком варианте
Только не забывать, что в PHP и в JS будут разные коды символов после 127.
Ответить с цитированием
  #9 (permalink)  
Старый 19.11.2009, 13:09
Аватар для greatilya
Интернет-турист
Отправить личное сообщение для greatilya Посмотреть профиль Найти все сообщения от greatilya
 
Регистрация: 01.08.2008
Сообщений: 516

Kolyaj,
Спасибо огромное за Ваше терпение. И за подробные ответы.

Сообщение от Kolyaj
в PHP и в JS будут разные коды символов после 127
Это постараюсь понять уже на стадии функционирования проекта, сейчас нет совсем времени.
__________________
VPS от 175 рублей (есть скидки 15% писать в ПМ) Анализ рынка VPS серверов
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен.
Альберт Эйнштейн
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста профану - проверьте синтаксис - Попап dopelher Общие вопросы Javascript 6 14.08.2009 10:07