| |
|
|
| | Нужно проверить ввод названия города. Можно только так, например: г. Омск или Омск.
Проверяю:
if (preg_match("/^[г|с|п.\s]*[а-я]{2,}$/",strtolower(trim($sity)))) return true;
На локальной машине все работает, на сервере в любом случае показывает неверный ввод. Пробовал сохранить в фал $sity для того чтобы посмотреть что же получаю на сервере - записует г. Омск. Так что я в итоге получаю на сервере при передаче формы? В чем проблема?
Форма сама загружена в iframe, то есть диалог с сервером наподобие AJAX. | |
| |
|
|
| |
|
|
| |
для: sim5
(21.03.2007 в 10:16)
| | | Если данные из формы передаются методом POST
то тогда запись будет такая:
if (preg_match("/^[г|с|п.\s]*[а-я]{2,}$/",strtolower(trim($_POST[sity])))) return true;
|
| |
| |
|
|
| |
|
|
| |
для: zerocool
(21.03.2007 в 11:02)
| | | $sity = $_POST['sity']; а затем передается в функцию для проверки. | |
| |
|
|
| |
|
|
| |
для: sim5
(21.03.2007 в 11:11)
| | | Ну так никто и не занет возможную причину?
У хостера PHP 5.1.6 - на локальной машине 4.4.0
У хостера Apache 1.3.37 - на локальной машине 1.3.33
Могут ли породить эту проблему какие либо насторойки PHP или Apache, и на которые мне надо обратить внимание? | |
| |
|
|
| |
|
|
| |
для: sim5
(21.03.2007 в 10:16)
| | | Попробуйте так
if(eregi("^[г|с|п.]*[[:space:]]?[а-я]{2,}$",strtolower(trim($sity))))return true;
|
| |
| |
|
|
| |
|
|
| |
для: zerocool
(21.03.2007 в 15:50)
| | | И так не работает. | |
| |
|
|
| |
|
|
| |
для: sim5
(21.03.2007 в 10:16)
| | | Может что-то с кодировками не то, попробуйте написать для теста это всё на английском, например. | |
| |
|
|
| |
|
|
| |
для: Nemesis
(21.03.2007 в 16:59)
| | | А что может быть с кодировкой. Если я ремирую проверку, то все что получаю из формы нормально пишется в базу, да и в файл, который я для провеки создавал, тоже пишется нормально. Если какие-то происходят преобразования с текстом, то тогда на каком этапе это происходит? | |
| |
|
|
| |
|
|
| |
для: sim5
(21.03.2007 в 17:03)
| | | Извиняюсь, что достал это вновь "из дремучих подвалов", но уже и не знаю что думать. Может ли быть причиной этого, различия в установках:
Apache Environment
QUERY_STRING
Хост - no value
Локал - lang=ru-win1251&server=1&collation_connection=cp1251_general_ci
REQUEST_URI
Хост - /main.php
Локал - /Tools/phpmyadmin/phpinfo.php?lang=ru-win1251&server=1&collation_connection=cp1251_general_ci
HTTP Headers Information
HTTP Request
Хост - GET /main.php HTTP/1.1
Локал - GET /Tools/phpmyadmin/phpinfo.php?lang=ru-win1251&server=1&collation_connection=cp1251_general_ci HTTP/1.1
Других отличий, как либо связанных с кодировкой, не нашел. | |
| |
|
|
| |
|
|
| |
для: sim5
(23.03.2007 в 14:19)
| | | Попробуйте установить локаль | |
| |
|
|
| |
|
|
| |
для: JIEXA
(23.03.2007 в 14:38)
| | | Где, у хостера? | |
| |
|
|
| |
|
|
| |
для: sim5
(23.03.2007 в 15:07)
| | | во - первых, может просто не работать strtolower();
во - вторых пропиши setlocale() | |
| |
|
|
| |
|
|
| |
для: mihdan
(23.03.2007 в 15:51)
| | | strtolower() - работает, гаратия. setlocale() - тогда интересно, при проверке принятых сообщений в гостевой находятся "неприличные" слова и происходит их замена, а я не прописывал setlocale(). Но я всетаки попробую этот совет. | |
| |
|
|
| |
|
|
| |
для: mihdan
(23.03.2007 в 15:51)
| | | еще попробуйте в метатегах страницы четко прописать кодировку | |
| |
|
|
| |
|
|
| |
для: ZuArt
(23.03.2007 в 15:58)
| | | Кодировка прописана.
Сегодня у нас сеть паршивит, не все работает, не могу и до сайта достучаться - завтра попробую. | |
| |
|
|
| |
|
|
| |
для: sim5
(23.03.2007 в 16:06)
| | |
<?php
if (preg_match("/^[\s]*[г\.|с\.|п\.]*[\s]*[а-я]{2,20}[\s]*$/si",strtolower(trim($_POST[$sity])))) return true;
?>
|
| |
| |
|
|
| |
|
|
| |
для: mihdan
(23.03.2007 в 16:09)
| | | Балгодарю, завтра попробую. | |
| |
|
|
| |
|
|
| |
для: sim5
(23.03.2007 в 16:15)
| | | во - первых, может просто не работать strtolower();
Вот именно это и является причиной проблемы. Если бы я свой "тест файл" записывал после этой функции, то бы понял это раньше. Я указывал, что формы загружаются в iframe (в данном случае). С других страниц (где формы расположены на странице) приходящие из форм данные нормально обрабатываются и strtolower(), и ucwords(). Вопросы:
1. Значит прописнный в META-теге язык, для форм загруженных в iframe "не указ" или это роли не играет?
2. Если прописать setlocale(), например, в индексном файле, во всех скриптах это будет учитываться?
3. А можно ли изменить соответствующие значения переменных окружения "для себя", например через .htaccess, чтобы не морочиться с этими проблемами? Если да, то как это сделать, что надо прописать? | |
| |
|
|
| |
|
|
| |
для: sim5
(24.03.2007 в 12:12)
| | | Ребята, ну что за ерунда творится на сервере, а может "в башке моей"? Ну вот написал такое для пробы, кинул на сервер:
<?
setlocale(LC_ALL, 'ru_RU');
$st = "АЛЕВТИНА";
echo strtolower($st);
?>
|
Запускаю и получаю - АЛЕВТИНА.
Вызываю setlocale с нулевым параметром, получаю:
LC_COLLATE=C;LC_CTYPE=Russian_Russia.1251;LC_MONETARY=C;LC_NUMERIC=C;LC_TIME=C
Ну значит локаль установлена как нужно? Или что еще надо? Ну что мне нужно сделать в конце концов, чтобы это все заработало?
P.S. Вообще дурь какая-то творится - еще раз запускаю setlocale с нулевым параметром, получаю: C
Опять проверяю - C и больше ничего. | |
| |
|
|
| |
|
|
| |
для: sim5
(24.03.2007 в 14:23)
| | | 'ru_RU' - не достаточно, нужно задать ещё кодировку - лучше уточнить в службе технической поддержки хостера, какой вид локали следует использовать. | |
| |
|
|
| |
|
|
| |
для: cheops
(25.03.2007 в 13:44)
| | | Я указывал и кодировку - ничего не помогло. Направили письмо хостеру. Спросили почему так, и что за странные текущие переменные мы в ответ получаем? Ответ был таков - Если хотите мы переведем ваш аккуант на РНР 4, и все. Ну что я могу ответить им? Написал, что если проще перевести на РНР 4, чем изменить настройки, пусть переводят, но всетаки попросил (для интереса) ответить - почему так получается. Может и ответят. | |
| |
|
|
| |
|
|
| |
для: sim5
(25.03.2007 в 15:55)
| | | Попробуйте установить локаль следующим образом
<?php
setlocale (LC_ALL, array ('ru_RU.CP1251', 'rus_RUS.1251'));
?>
|
| |
| |
|
|
| |
|
|
| |
для: sim5
(24.03.2007 в 14:23)
| | | setlocale(LC_ALL, "ru_RU.CP1251"); | |
| |
|
|