Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 23.10.2016
Сообщений: 122

Поиск времени и диапазона времени в тексте

05.07.2017, 18:40. Показов 949. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день есть текст в нем встречается время или диапазон времени в таком виде

текст в 23 часа
текст в 22:00 - 00:00
текст с 21.00 до 03.00
текст в 17 часов
текст с 17:30 до 20:00
текст 18:30-19:30
текст в 13. 00
текст в 17.00
текст в 7.00
время может начинаться с буквы "в" (текст в 17.00 или текст в17.00)
может содержать между часами и минутами : (18:30, 18 :30, 18 : 30, 18: 30)- или больше пробелов,
точку (18.30, 18 .30, 18 . 30, 18. 30)- или больше пробелов, в этом случае нужно исключить время где минуты не должны быть в диапозоне от 01-12, исключаем дату 00 может быть,
или пустое пространство ( в 13 00, в 13 00).
могут быть диапазоны времени( в 11.00 - 00.00, в 22.00 - 00.00, в 22:00- 00:00, 22:00 -00:00, 22:00 00:00, 22:00 00:00 ) если диапозон начинается в значит изключение для дат не нужно но если диапазон начинается с "c"(с21.00 до 03.00, с 21:00 до 03:00, с 21:00 по 03:00 ) тогда нужно опять исключить время где минуты находятся в диапазоне 1-12.
Встречаются и такое время (23 часа, в 17 часов).
Ну и вообще время может быть без пробелов к тексту (текст22:00текст). В общем кто может помогите пожалуйсьа
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.07.2017, 18:40
Ответы с готовыми решениями:

Как заблокировать поиск по времени в секундах
Подскажите как мне заблокировать всех этих наглых поисковиков пауков которые сканируют сайт каждые 10 - 12 секунд и повторят несколько раз...

Поиск общего времени разговора на основе номера, времени и даты
Здравствуйте, Подскажите как можно подставить формулами время разговора"Итог" на основе телефона, времени, даты. Суть, надо в...

Расчет времени пуска,установившегося времени,времени торможения и паузу для лифта
t0=(3600/h)*(1-E) - пауза.ЕЕ можно взять произвольно(самим). А остальное надо высчитывать. tуст=(3600/h)*E-tп-tт Для построения...

3
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
08.07.2017, 00:59
С помощью регулярных выражений

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$t = 'текст в 23 часа
текст в 22:00 - 00:00
текст с 21.00 до 03.00
текст в 17 часов
текст с 17:30 до 20:00
текст 18:30-19:30
текст в 13. 00
текст в 17.00
текст в 7.00
время может начинаться с буквы "в" (текст в 17.00 или текст в17.00)
может содержать между часами и минутами : (18:30, 18 :30, 18 : 30, 18: 30)- или больше пробелов,
точку (18.30, 18 .30, 18 . 30, 18. 30)- или больше пробелов, в этом случае нужно исключить время где минуты не должны быть в диапозоне от 01-12, исключаем дату 00 может быть,
или пустое пространство ( в 13 00, в 13 00).
могут быть диапазоны времени( в 11.00 - 00.00, в 22.00 - 00.00, в 22:00- 00:00, 22:00 -00:00, 22:00 00:00, 22:00 00:00 ) если диапозон начинается в значит изключение для дат не нужно но если диапазон начинается с "c"(с21.00 до 03.00, с 21:00 до 03:00, с 21:00 по 03:00 ) тогда нужно опять исключить время где минуты находятся в диапазоне 1-12.
Встречаются и такое время (23 часа, в 17 часов).
Ну и вообще время может быть без пробелов к тексту (текст22:00текст)';
 
$t = ' '.preg_replace('/[\s]+/ism',' ',$t);
while (1) {
    if (preg_match('/[^\w]в[\s]{0,1}[\d]+/ism',$t,$m)) var_dump($m);
    break;
}
1
0 / 0 / 0
Регистрация: 23.10.2016
Сообщений: 122
08.07.2017, 18:57  [ТС]
plohoyav, сделал регулярку вот https://regex101.com/r/Mrh4YC/5 но в php выдает другой результат
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$t = 'текст в 23 часа
текст в 22:00 - 00:00
текст с 21.00 до 03.00
текст в 17 часов
текст с 17:30 до 20:00
текст 18:30-19:30
текст в 13. 00
текст в 17.00
текст в 7.00
время может начинаться с буквы "в" (текст в 17.00 или текст в17.00)
может содержать между часами и минутами : (18:30, 18 :30, 18 : 30, 18: 30)- или больше пробелов,
точку (18.30, 18 .30, 18 . 30, 18. 30)- или больше пробелов, в этом случае нужно исключить время где минуты не должны быть в диапозоне от 01-12, исключаем дату 00 может быть,
или пустое пространство ( в 13 00, в 13 00).
могут быть диапазоны времени( в 11.00 - 00.00, в 22.00 - 00.00, в 22:00- 00:00, 22:00 -00:00, 22:00 00:00, 22:00 00:00 ) если диапозон начинается в значит изключение для дат не нужно но если диапазон начинается с "c"(с21.00 до 03.00, с 21:00 до 03:00, с 21:00 по 03:00 ) тогда нужно опять исключить время где минуты находятся в диапазоне 1-12.
Встречаются и такое время (23 часа, в 17 часов).
Ну и вообще время может быть без пробелов к тексту (текст22:00текст)';
 //print__r($t);
 
print__r($t);
preg_match_all('~/[вс ]{0,3}([0-9]{1,2})[:. ]{1,3}([0-9]{1,2}|часа|часов)
(\sдо|до|по|\sпо|\s-|-)[\s]{0,1}([0-9]{1,2})[:. ]{1,3}([0-9]{1,2}|часа|часов)/ui',$t,$m);
print__r($m);
Добавлено через 7 часов 6 минут
Вот сделал может лучше можно сделать
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$text = 'текст в 23 часа
текст в 22:00 - 00:00
текст с 21.00 до 03.00
текст в 17 часов
текст с 17:30 до 20:00
текст 18:30-19:30
текст в 13. 00
текст в 17.00
текст в 7.00
время может начинаться с буквы "в" (текст в 17.00 или текст в17.00)
может содержать между часами и минутами : (18:30, 18 :30, 18 : 30, 18: 30)- или больше пробелов,
точку (18.30, 18 .30, 18 . 30, 18. 30)- или больше пробелов, в этом случае нужно исключить время где минуты не должны быть в диапозоне от 01-12, исключаем дату 00 может быть,
или пустое пространство ( в 13 00, в 13 00).
могут быть диапазоны времени( в 11.00 - 00.00, в 22.00 - 00.00, в 22:00- 00:00, 22:00 -00:00, 22:00 00:00, 22:00 00:00 ) если диапозон начинается в значит изключение для дат не нужно но если диапазон начинается с "c"(с21.00 до 03.00, с 21:00 до 03:00, с 21:00 по 03:00 ) тогда нужно опять исключить время где минуты находятся в диапазоне 1-12.
Встречаются и такое время (23 часа, в 17 часов).
Ну и вообще время может быть без пробелов к тексту (текст22:00текст)';
 //print__r($t);
 
print__r($text);
 
preg_match_all('/[вс ]{0,3}([0-9]{1,2})[:. ]{1,3}([0-9]{1,2}|часа|часов)
(\sдо|до|по|\sпо|\s-|-)[\s]{0,1}([0-9]{1,2})[:. ]{1,3}([0-9]{1,2}|часа|часов)/x',$text,$arrayInterval);
 
print__r($arrayInterval);
if(count($arrayInterval)>0) {
    $text = str_replace($arrayInterval[0], "", $text);
}
print__r($text);
preg_match_all('/[вс ]{0,3}([0-9]{1,2})[:. ]{1,3}([0-9]{1,2}|часа|часов)/x',$text,$arrayTime);
print__r($arrayTime);
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
08.07.2017, 19:34
Можно в цикле для массива цифр от 0 до 9 находить позицию вхождения цифры в строку функцией strpos, выбирать минимальное значение, отступать от позиции два символа влево, считывать 10 символов, проверять, чтобы в выбранной субстроке не было лишних символов, например запятых, лишних слов - кроме "в", "час", "часа", "часов", таким образом находить временной промежуток, удалять его из текста, добавлять в массив, повторять поиск.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.07.2017, 19:34
Помогаю со студенческими работами здесь

Алгоритм для сравнения диапазона времени.
Есть простая задачка, ноя никак не возму в толк, как к ней подступиться. Есть список организаций со временем работы, например с 12:00 до...

Выборка диапазона строк по времени datetime
есть поле datetime, не могу сообразить как мне сделать выборку по времени,пропуская дату.Например ячейка выглядит так 0000.00.00 00.00.00,...

Изменить формат времени диапазона ячеек
Как изменить формат диапозон ячеек времени из 2:20 рм на 14:20

Алгоритм распределения задач с учетом их важности, времени поступления и времени обработки
Задание составить алгоритм распределения задач с учетом их важности, времени поступления и времени обработки. На вход процессора...

Почему при записи даты и времени из формы в бд, к времени прибавляется час?
Здравствуйте, при записи даты и времени из формы в бд, к времени прибавляется час, почему так происходит?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru