Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбить дату на массив 
V
    Опции темы
Aliance
Дата 3.4.2006, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 2
Всего: 137



Имеется строка даты, вида: Apr 3 2006, 06:24
Как с помозью регулярных выражений ее разбить в массив по сл. элементам: месяц, число, год, часы, минуты, время (часы и минуты)?
PM MAIL WWW ICQ Skype   Вверх
CyClon
Дата 3.4.2006, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 1
Всего: 4



Код
<?php

$string = "Apr 3 2006, 06:24";

preg_match("#(\w{3}) (\d{1,2}) (\d{4}), (\d{2}):(\d{2})#", $string, $matches);

print_r($matches);

?>


Вернет нам:

Цитата
Array
(
    [0] => Apr 3 2006, 06:24
    [1] => Apr
    [2] => 3
    [3] => 2006
    [4] => 06
    [5] => 24
)



--------------------
user posted image
PM   Вверх
Serkys
Дата 3.4.2006, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 2
Всего: 22



С регулярными выражениями особо не работал, попробуй мою версию через explode() (должно работать).
Код

$date='Apr 3 2006, 06:24';
$arr1=explode(',', $date);
$arr[1]=trim($arr[1]);  //$arr1[1]='06:24'
$arr2=explode(' ', $arr1[0]);  //$arr2[0]='Apr', $arr[1]=3, $arr[2]=2006
$arr3=explode(':', $arr[1]);  //$arr3[0]='06', $arr3[1]='24'
//можешь присвоить каждой части даты для удобства свою переменную

PM MAIL   Вверх
CyClon
Дата 4.4.2006, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 1
Всего: 4



Serkys, регуляркой компактнее, и, возможно, быстрее. Хотя через explode тоже можно сделать.


--------------------
user posted image
PM   Вверх
Serkys
Дата 4.4.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 2
Всего: 22



Цитата(CyClon @ 4.4.2006, 12:38 Найти цитируемый пост)
Serkys, регуляркой компактнее, и, возможно, быстрее. Хотя через explode тоже можно сделать.

С регулярками не работал, подсказал так, как умею. Да, регуляркой удобнее. Надо учить PCRE. Про regexp читал как-то, но из-за отсутствия практики забыл всё.
PM MAIL   Вверх
skalex
Дата 4.4.2006, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 0
Всего: 23



Serkys, ты уж извини ... Но регулярки надо знать, без них в программировании никуда. smile
PM   Вверх
Serkys
Дата 4.4.2006, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 2
Всего: 22



Цитата(skalex @ 4.4.2006, 18:24 Найти цитируемый пост)
Serkys, ты уж извини ... Но регулярки надо знать, без них в программировании никуда.

Да я в курсе. Только пока реальной необходимости в их применении не было, а просто прочитать и попробовать уже пытался. Но скоро буду писать скрипт BB-кодов, придётся выучить.
И извинение ИМХО лишнее. Это то же самое, что извиняться за то, что в сутках только 24 часа smile
PM MAIL   Вверх
skalex
Дата 5.4.2006, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 0
Всего: 23



Была тут темка про обучение регулярным выражениям ... Вот она: http://forum.vingrad.ru/index.php?showtopic=55191
PM   Вверх
S.A.P.
Дата 5.4.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



В данном случае Serkys всё таки прав. Разбитие такой простой строки не подходящая задача для регулярных выражений. explode будет быстрее - 100%.
Вот немного модифицированный его код
Код

$date = 'Apr 3 2006, 06:24';
list($date, $time) = explode(',', $date);
list($month, $day, $year) = explode(' ', $date);
list($hour, $minute) = explode(':', trim($time));


Это сообщение отредактировал(а) S.A.P. - 5.4.2006, 12:20
PM MAIL   Вверх
skalex
Дата 5.4.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 0
Всего: 23



S.A.P., во первых чем докажешь, что в данном случае explode быстрее?

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

У нас в компании был один человек, который терпеть не мог регулярные выражения и вместо них он использовал разнообразные функции для работы со строками. Так вот его скрипты уже 2-ой год разобрать не могут и вспоминают добрым словом. smile

Это сообщение отредактировал(а) skalex - 5.4.2006, 15:26
PM   Вверх
Serkys
Дата 6.4.2006, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 2
Всего: 22



Про регулярки прочёл, задачки из темы немного порешал. В основы врубился, остальное на практике.
Добавлено @ 02:35
Что-то хозяин темы пропал...
PM MAIL   Вверх
Aliance
Дата 6.4.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 2
Всего: 137



Я тут :-) Не хотел вмешиваться в вашу дисскусию, спасибо за решения smile
Думаю все же воспользуюсь вариантом CyClon
PM MAIL WWW ICQ Skype   Вверх
skalex
Дата 6.4.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 0
Всего: 23



Aliance, правильное решение! smile
PM   Вверх
CyClon
Дата 6.4.2006, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 1
Всего: 4



На счет explode или PCRE - вот что я вам скажу: если разница идет на микросекунды, то лучше пожертвовать скоростью, чем простотой и компактностью кода.


--------------------
user posted image
PM   Вверх
Serkys
Дата 6.4.2006, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 2
Всего: 22



Цитата(CyClon @ 6.4.2006, 18:59 Найти цитируемый пост)
На счет explode или PCRE - вот что я вам скажу: если разница идет на микросекунды, то лучше пожертвовать скоростью, чем простотой и компактностью кода.

Поддерживаю. Сам постоянно сталкиваюсь с проблемой запутанности своего же кода.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0810 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.