|
| |
|
|
| |
для: tAleks
(09.04.2007 в 22:22)
| | | >Ну на счет крика Вы, сэр, завернули! Название темы даже с маленкой буквы, и в конце нет восклицательного знака. ...... ;)
Оно конечно так. Но, насколько мне не изменяет склероз, это не первая Ваша тема .. э... на эту тему. :) | |
| |
|
|
| |
|
|
| |
для: Trianon
(09.04.2007 в 21:27)
| | | >Чем поднимать крик " у меня не работают регулярки",
Ну на счет крика Вы, сэр, завернули! Название темы даже с маленкой буквы, и в конце нет восклицательного знака. ...... ;)
>убрали бы модификатор i (case-нечувствительность) из хвоста шаблона и честно перечислили бы как диапазоны строчных букв , так и заглавных.
>Да. нечувствительность к регистру букв определяется локалью. А чем её еще определять?
>С другой стороны, убрав эту зависимость из шаблона, в большинстве случаев получаешь локаль-независимую обработку регулярок, а следовательно более устойчивый и портабельный код. И он одинаково работает хоть на одном хостинге, хоть на другом, хоть на локалке.
Спасибо, теперь буду знать на будущее. | |
| |
|
|
| |
|
|
| |
для: tAleks
(09.04.2007 в 17:18)
| | | Чем поднимать крик " у меня не работают регулярки", убрали бы модификатор i (case-нечувствительность) из хвоста шаблона и честно перечислили бы как диапазоны строчных букв , так и заглавных.
Да. нечувствительность к регистру букв определяется локалью. А чем её еще определять?
С другой стороны, убрав эту зависимость из шаблона, в большинстве случаев получаешь локаль-независимую обработку регулярок, а следовательно более устойчивый и портабельный код. И он одинаково работает хоть на одном хостинге, хоть на другом, хоть на локалке. | |
| |
|
|
| |
|
|
| |
для: cheops
(09.04.2007 в 15:39)
| | | Пример вот (функция проверки входных данных):
function check_user_data($data, $full = NULL)
{
// Перменная с классом, для вывода ошибок
$err = 'class="error"';
// Перебираем массив с данными
foreach($data as $key => $val)
{
if(!empty($val))
{
$val = trim(htmlspecialchars(stripslashes($val)));
$temp[$key] = $val;
switch($key)
{
// USERS
case 'surname':
case 'name':
case 'patronymic':
$temp[$key] = ucfirst($val);
if(!preg_match("/^[а-яa-z\ ]+$/i", $val)) $error[$key] = $err; // Ввот тут ругаетстя, т.е. присваивает значение переменной $error[$key].
break;
case 'sex':
if($val != 'male' && $val != 'female') $error[$key] = $err;
break;
case 'email' :
if(!preg_match("/^[^@\s]+@([-a-z0-9_]+\.)+[a-z]{2,}$/i", $val)) $error[$key] = $err;
break;
case 'icq' :
$val = str_replace("-", "", trim(htmlspecialchars(stripslashes($val))));
$temp[$key] = $val;
if(!preg_match("/^[0-9]+$/i", $val)) $error[$key] = $err;
break;
case 'url':
if(!preg_match("/(http:\\/\\/|http:\\/\\/www|www)(\\S+)/si", $val)) $error[$key] = $err;
break;
case 'bd_day':
case 'bd_month':
case 'bd_year':
if(!is_numeric($val)) $error[$key] = $err;
break;
// DS
case 'id_hlf' :
case 'id_ds' :
if(!is_numeric($val)) $error[$key] = $err;
break;
}
}
else $temp[$key] = '';
}
// Проверяем обязательные для заполнения поля
if(isset($full)) {
foreach($full as $val) {if(empty($temp[$val])) $error[$val] = $err;}
}
// Проверяем дату рождения
// Если все 3 значения не пустые ...
if ( (!empty($temp['bd_day'])) && (!empty($temp['bd_month'])) && (!empty($temp['bd_year'])))
{
// ... проверяем корректность
if (!checkdate($temp['bd_month'], $temp['bd_day'], $temp['bd_year']))
$error['bd_date'] = $err;
}
elseif ( (!empty($temp['bd_day'])) || (!empty($temp['bd_month'])) || (!empty($temp['bd_year'])))
{
$error['bd_date'] = $err;
}
// Возвращаем результат
return array($temp, $error);
}
|
| |
| |
|
|
| |
|
|
| |
для: tAleks
(09.04.2007 в 15:11)
| | | Приведите пример (всё должно работать без локали), сам использую регулярные выражения очень интенсивно, за год ни разу никаких проблем не было с русским языком. | |
| |
|
|
| |
|
|
| |
для: tAleks
(09.04.2007 в 15:11)
| | | Я на softtime хостюсь недавно, но мой сайт очень активно использует regExp. Проблем не было. Можно пример? | |
| |
|
|
| |
|
|
| | Закачал на демо хостинг ST сайт. Все вроде робит, кроме РВ.
У меня такая же проблема была на моем хостинге. Там мне пришлосль добавить локаль:
setlocale(LC_CTYPE, "ru_RU.cp1251", "Russian_Russia.1251");
|
И все заработало.
Здесь, что-то не работает, ни с локалью, ни без нее.
Не пропускает только русские буквы.
Подскажите что надо сделать? | |
| |
|
|
|