Проверьте регулярку
Опять я с регуляркой лезу....
Просьба проверить регулярку, написана она под РНР, но как я понимаю особых отличий нет. 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% правильно, сам то их проверил, вроде результат правильный. |
Раюотать -- работает, но вот как быть с Юникодом?
|
Пробелы, точки и дефисы в символьном классе экранировать не надо (пробелы вообще никогда не надо). Точка автоматически перестает быть метасимволом в символьном классе, а дефис просто должен стоять на первом или на последнем месте.
Цитата:
'\x7F' || '\u007F' |
Цитата:
страница у меня в кодировке cp1251 <meta http-equiv="Content-Type" content="text/html; charset=cp1251" /> кодировка по умолчанию у сервера тоже cp1251. Откуда тогда взяться юникоду? Как я понимаю символы юникода могут быть вставлены пользователем сайта в поля регистрации, и как я понимаю для этого им надо будет вставить эти символы специально извне. Но тогда регулярка вырежет этот юникод, чтоб не баловались.... Или юникод может попасть другим способом и тогда стоит доработать регулярку? как я понял для юникода нужна доработка следующая: $text = ereg_replace("[^".chr(0x7F)."-".chr(0xff)."\u007F-\u00FF-]", "", $text); Хотя наверное что-то не так написал. |
Kolyaj,
а разве не '\u0430' вместо '\u007F'? |
Цитата:
Цитата:
|
Еще раз извиняюсь за навязчивость:
Цитата:
$text = ereg_replace("[^".chr(0x7F)."-".chr(0xff)."-]", "", $text); Правильно? :thanks: |
В JS все в юникоде, в PHP все приходит в той кодировке, в которой страница.
Юникод, кстати, это не кодировка, а таблица символов, у которой есть различные кодировки, в том числе UTF-8. Цитата:
|
Kolyaj,
Спасибо огромное за Ваше терпение. И за подробные ответы. Цитата:
|
Часовой пояс GMT +3, время: 16:53. |