За последние 24 часа нас посетили 18666 программистов и 1604 робота. Сейчас ищут 983 программиста ...

Разобрать переменную на части

Тема в разделе "PHP для новичков", создана пользователем kentastik77, 24 ноя 2011.

  1. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    Есть переменная в которой лежит дата. Нужно достать дату перевести в другой формат. Пример

    Есть $a = 'Май 2011 г.';
    Нужно $b = '05_11'

    так понимаю можно для $b организовать нечто подобное
    Код (Text):
    1. if ($c == 'Май') { $d = 05; }
    2. ....
    3. if ($c == 'Январь') { $d = 01; }
    4. $b = $d.'_'.$g;
    где переменная $g это последние 2 цифры года.

    Догадываюсь что нужны регулярные выражения, но даже не знаю с какой стороны их туда крутить :(
    Может есть варианты обойтись без регулярных выражений?
     
  2. kotyara

    kotyara Активный пользователь

    С нами с:
    17 фев 2010
    Сообщения:
    163
    Симпатии:
    0
    по твоему примеру простейшим способом будет воспользоваться функцией http://php.net/manual/ru/function.explode.html разбить твою русскую дату по пробелу. заранее сделать ассоциативный массив формата
    '01' => 'январь'
    после чего с помощью функции http://php.net/manual/ru/function.array-search.html найти индекс месяца
    ну а как преобразовать 2011 в 11 думаю сам найдешь способ, вариантов полно
     
  3. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    PHP:
    1. <?php
    2. $date = 'Май 2011 г.';
    3. $vocabulary = array (
    4.     '01' => 'Январь',
    5.     '02' => 'Февраль',
    6.     '03' => 'Март',
    7.     '04' => 'Апрель',
    8.     '05' => 'Май',
    9.     '06' => 'Июнь',
    10.     '07' => 'Июль',
    11.     '08' => 'Август',
    12.     '09' => 'Сентябрь',
    13.     '10' => 'Октябрь',
    14.     '11' => 'Ноябрь',
    15.     '12' => 'Декабрь'
    16. );
    17. $date = explode (' ', $date);
    18. $date = array_search ($date[0], $vocabulary) . '_' . substr ($date[1], 2);
    19. echo $date;
     
  4. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    kotyara спасибо огромное. И вот я снова отодвинул изучение ругулярок :)
     
  5. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    kentastik77, в случае использования регулярных выражений это была бы функция preg_replace, как вариант...
     
  6. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    Mr. T тебе тоже огромное спасибо :)