Forum Webscript.Ru
Программирование => Perl => Тема начата: bismark2 от 23 Сентября 2004, 18:57:54
-
Все наверное знаете что есть умные автоответчики. Смысл их работы понятен. Вопрос как можно сделать, чтоба e-mail ввести в форму подписки латиницей а имя кирилицей. Англоязычные скрипты при попытке ввода имени на русском языке выдают сообщение об ошибке типа только буква, цыфры и пробел можно использовать для ввода имени. Кирилицу не понимает.
-
http://forums.webscript.ru/showthread.php?s=&threadid=18049&msgnum=2 не поможет?
-
Forza Нет это не о том. Тут в самой программе есть админ панель где можно сделать все настройки в том числе свои, подписчиков и т.д. но только воспринимает все изменения если ввод во все формы в том числе и на подписку осуществляется латинской раскладкой клавиатуры, при попытке ввести на кирилице выдает сообщение об ошибке. По другому нужно найти способ ввода данных по русски.
-
Так что тебе мешает написать простенькую программку, которая будет перекодировать кириллицу в набор латинских букв, цифр и знаков препинания, а потом копировать этот набор (пусть даже вручную) в поля формы?[OFF]Или я до чего-то не догоняю?[/OFF]
Получатель е-мэйла получит нормальную кириллицу.
Хотяbismark2:
типа только буква, цыфры и пробел можно использовать для ввода имени
Т.е. нельзя использовать "равно" и вопросительный знак? Тогда мой совет никак не подойдёт.
-
Сам текст набиваю по русски проблем нет но толь пытаюсь сохранить результат выдает
"can only contain letters, digits and spaces"
из скрипта проверки
-
вообще надо посмотреть - как там осуществляется проверка полей.
тогда и сказать что-то можно будет.
-
Фрагмент
sub IsAlphaNumeric {
my($textin) = @_;
if ($textin =~ /[^a-zA-Z0-9]/) {
return 0;
} # if
else {
return 1;
} # else
} # sub IsAlphaNumeric
sub IsAlphaNumericAndSpaces {
my($textin) = @_;
if ($textin =~ /[^a-zA-Z_0-9\\ ]/) {
return 0;
} # if
else {
return 1;
} # else
} # sub IsAlphaNumericAndSpaces
sub IsAlphaNumericAndSpacesAndExtraChars {
my($textin) = @_;
if ($textin =~ /[^a-zA-Z_.:!-?Ј,{}*\\$&0-9\\ ]/) {
return 0;
} # if
else {
return 1;
} # else
} # sub IsAlphaNumericAndSpacesAndExtraChars
sub IsValidEmailAddress {
my($email) = @_;
my($result);
unless ($email =~ /(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)|(,)/
|| $email !~
/^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$/) {
$result = 1;
} # unless
else {
$result = 0;
} # else
if ($email =~ s/\\s//g) {
$result = 0;
} # if
return $result;
} # sub IsValidEmail
-
Как работает этот скрипт можно посмотреть по ссылке http://www.autoresponseplus.com/cgi-bin/arp3test/arp3.pl
Попробуйте ввести имя на латинице а потом на кирилице
-
в начеле скрипта прописать
use locale;
потом в sub IsAlphaNumericAndSpaces это:
$textin =~ /[^a-zA-Z_0-9\\ ]/
поменять на это
$textin =~ /[^\\w0-9\\ ]/
а в IsAlphaNumericAndSpacesAndExtraChars это
$textin =~ /[^a-zA-Z_.:!-?Ј,{}*\\$&0-9\\ ]/
на это :
$textin =~ /[^\\w.:!-?Ј,{}*\\$&0-9\\ ]/
-
bismark, я всё-таки думаю, что раз скрипт изначально хотел работать только с латиницей, а сейчас ему, поковырявшись в регулярных выражениях, начать подсовывать кириллицу, он всё-таки не будет правильно с ней работать: т.е. он не будет её кодировать, будет просто в "голом" виде её класть в SMTP-поля, и то, как это будет воспринимать почтовый клиент получателя письма, есть тайна.
-
Forza - экспериментальным путем проверит :)
согласен, латиница тут уместнее
-
Пробовал ввести изменения результат тотже
-
2bismark или локаль не включил или для поля name там своя проверка, как для мейла :)
-
Так что же тогда можно попытаться сделать, как убрать эту проверку или как ввести туда диапазон кирилицы и какой он
-
Может быть есть готовые решения