Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: не работютт регулятные выражения на Хостинге от SofrTime

Сообщения:  [1-7] 

 
 автор: Trianon   (09.04.2007 в 23:53)   письмо автору
 
   для: tAleks   (09.04.2007 в 22:22)
 

>Ну на счет крика Вы, сэр, завернули! Название темы даже с маленкой буквы, и в конце нет восклицательного знака. ...... ;)
Оно конечно так. Но, насколько мне не изменяет склероз, это не первая Ваша тема .. э... на эту тему. :)

   
 
 автор: tAleks   (09.04.2007 в 22:22)   письмо автору
 
   для: Trianon   (09.04.2007 в 21:27)
 

>Чем поднимать крик " у меня не работают регулярки",

Ну на счет крика Вы, сэр, завернули! Название темы даже с маленкой буквы, и в конце нет восклицательного знака. ...... ;)

>убрали бы модификатор i (case-нечувствительность) из хвоста шаблона и честно перечислили бы как диапазоны строчных букв , так и заглавных.
>Да. нечувствительность к регистру букв определяется локалью. А чем её еще определять?
>С другой стороны, убрав эту зависимость из шаблона, в большинстве случаев получаешь локаль-независимую обработку регулярок, а следовательно более устойчивый и портабельный код. И он одинаково работает хоть на одном хостинге, хоть на другом, хоть на локалке.

Спасибо, теперь буду знать на будущее.

   
 
 автор: Trianon   (09.04.2007 в 21:27)   письмо автору
 
   для: tAleks   (09.04.2007 в 17:18)
 

Чем поднимать крик " у меня не работают регулярки", убрали бы модификатор i (case-нечувствительность) из хвоста шаблона и честно перечислили бы как диапазоны строчных букв , так и заглавных.
Да. нечувствительность к регистру букв определяется локалью. А чем её еще определять?
С другой стороны, убрав эту зависимость из шаблона, в большинстве случаев получаешь локаль-независимую обработку регулярок, а следовательно более устойчивый и портабельный код. И он одинаково работает хоть на одном хостинге, хоть на другом, хоть на локалке.

   
 
 автор: tAleks   (09.04.2007 в 17:18)   письмо автору
 
   для: 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); 

   
 
 автор: cheops   (09.04.2007 в 15:39)   письмо автору
 
   для: tAleks   (09.04.2007 в 15:11)
 

Приведите пример (всё должно работать без локали), сам использую регулярные выражения очень интенсивно, за год ни разу никаких проблем не было с русским языком.

   
 
 автор: SHAman   (09.04.2007 в 15:20)   письмо автору
 
   для: tAleks   (09.04.2007 в 15:11)
 

Я на softtime хостюсь недавно, но мой сайт очень активно использует regExp. Проблем не было. Можно пример?

   
 
 автор: tAleks   (09.04.2007 в 15:11)   письмо автору
 
 

Закачал на демо хостинг ST сайт. Все вроде робит, кроме РВ.

У меня такая же проблема была на моем хостинге. Там мне пришлосль добавить локаль:

setlocale(LC_CTYPE, "ru_RU.cp1251", "Russian_Russia.1251");


И все заработало.

Здесь, что-то не работает, ни с локалью, ни без нее.
Не пропускает только русские буквы.

Подскажите что надо сделать?

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования