Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Нужен совет по написанию функции на pl/perl
|
|||
|---|---|---|---|
|
#18+
glebofffЧитаем там: Note : Remember that the backslash (\) already has a special meaning in PostgreSQL string literals. To write a pattern constant that contains a backslash, you must write two backslashes in the statement. Или я уже безбожно туплю, или не знаю что. Про вышенаписанное я в курсе, и в оригинальной моей функции на pl/perl if ( !($_TD->{new}{lastname} =~ /^[^A-Za-z0-9\!\@\#\$\%\^\&\*\(\)\_\+\=\\\/\?\,\.\<\>\~\`\"\'\;\:\{\}\[\]]+$/) ) { $errstr.= "<br>\nCHECK_USERS: Недопустимый символ в поле ФАМИЛИЯ"; } написаны именно two backslashes. Сейчас еще вспомнил тупизмы php, поизвращался с \\\, \\\\, \\\\\\... Не отлавливаются \, и хоть убейся. Я скоро спячу с этими палками... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 15:25 |
|
||
|
Нужен совет по написанию функции на pl/perl
|
|||
|---|---|---|---|
|
#18+
[quot shrdlu] create table test ( uid serial8 primary key, lastname varchar(64) not null, firstname varchar(64) not null, constraint empty_field check ( lastname <> '' and firstname <> ''), constraint valid_chars check (convert(lastname , 'koi8', 'utf8') similar to '[А-Яа-я -]+') ); [/src]У вас регексп неправильный. Т.к. диапазоны символов проверяются согласно кодовой таблицы установленной для базы, то в случае KOI8 правильный регексп: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 16:35 |
|
||
|
Нужен совет по написанию функции на pl/perl
|
|||
|---|---|---|---|
|
#18+
.gcУ вас регексп неправильный. Т.к. диапазоны символов проверяются согласно кодовой таблицы установленной для базы, то в случае KOI8 правильный регексп: Код: plaintext Мой ИСХОДНЫЙ рэгэксп - правильный. Хотя и весьма неизящный, но работающий, вот маленький скрипт на perl, которым тестировалась его работа: #!/usr/bin/perl sub check { if ($_[0] =~ /^[^A-Za-z0-9\!\@\#\$\%\^\&\*\(\)\_\+\=\\\/\?\,\.\<\>\~\`\"\'\;\:\{\}\[\]]+$/) { print "Все символы допустимы.\n"; } else { print "Обнаружен недопустимый символ.\n" } } print "Проверка regexp - допустимость только русских букв, пробелов и дефиса.\n"; $text = 'И\'ван-в';print "Пример 1 - $text\n";&check($text); $text = 'И ван-jв';print "Пример 2 - $text\n";&check($text); $text = 'И\ван-в';print "Пример 3 - $text\n";&check($text); $text = 'Иван-ов';print "Пример 4 - $text\n";&check($text); $text = 'Иванов оглы';print "Пример 5 - $text\n";&check($text); $text = 'Jonhs';print "Пример 6 - $text\n";&check($text); exit; Если не лень - скопируйте скрипт и проверьте результат его выполнения. У меня он выдает вот что: # ./testregexp.pl Проверка regexp - допустимость только русских букв, пробелов и дефиса. Пример 1 - И'ван-в Обнаружен недопустимый символ. Пример 2 - И ван-jв Обнаружен недопустимый символ. Пример 3 - И\ван-в Обнаружен недопустимый символ. Пример 4 - Иван-ов Все символы допустимы. Пример 5 - Иванов оглы Все символы допустимы. Пример 6 - Jonhs Обнаружен недопустимый символ. Проблемы начинаются только при использовании данного регэкспа в функциях/проверках postgreSQL. С чем это связано - без понятия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2006, 18:17 |
|
||
|
Нужен совет по написанию функции на pl/perl
|
|||
|---|---|---|---|
|
#18+
Чтобы исключить версию с кодировкой сделайте initdb в другом каталоге с полным указанием --lc-xxx, выполните set client_encoding=... перед выполнением скрипта. Чтобы не задваивать бэкслеши пользуйтесь долларовыми кавычками. Не поленился, проверил - ваш регэксп у меня работает (на виндовой версии, но в базе с koi8): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 03:46 |
|
||
|
|

start [/forum/topic.php?fid=53&startmsg=34087416&tid=2006004]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
147ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 269ms |
| total: | 500ms |

| 0 / 0 |
