Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][reg]Wyciągnięcie z treści, przedziału godzinowego
Forum PHP.pl > Forum > Przedszkole
TomASS
Cześć

Kombinuję i kombinuję i wykombinować nie umim.
Mam komentarze od użytkowników w których mogą wpisywać min. godziny (zakres), potrzebuję uzyskać dwie dane- godzina od, godzina do.

Przykładowe "standardy" wpisywane przez użytkowników to:
Cytat
  • g.7-17
  • godz: 07.00-17.00
  • godz: 7.00-17.00
  • 07-17
  • 07:00-17:00
  • godz 07:00-17:00
  • godz: 07.00-17.00 pilne
  • od 7 do 16

kombinacji jest multum:
- g. / godz/ od do
- zero przy cyfrach <10
- po godzinie minuty lub bez
- po godzinie kropka lubz dwukropek
- dodatkowy komentarz przed uwagami
- dodatkowy komentarz po uwagach
itp...


czy ktoś miał podobny problem? Dodam, że niestety stworzenie dodatkowych pól dla użytkowników nie wchodzi w grę, tak samo jak zmuszenie użytkowników do stosowania jednego formatu.

goran
Kupa roboty - musisz prześledzić wszystkie mozliwość, a potem zapisać je w regexp'ie. Aczkolwiek już na wstępie można stwierdzić, że jest to zadanie karkołomne, a może wręcz niemożliwe bo jak już będziesz myślał, że udało Ci się wymyślić wszystkie mozliwość to user wymyśli Ci kompletnie nowy smile.gif.

Np. od siódmej do dwunastej winksmiley.jpg.

Pozdr.
Pawel_W
ale masz problem, narzuć użytkownikowi własny sposób wyświetlania - choćby przez combo boxa winksmiley.jpg
goran
Przecież napisał, że nie może.
TomASS
Cytat
Kupa roboty - musisz prześledzić wszystkie mozliwość, a potem zapisać je w regexp'ie. Aczkolwiek już na wstępie można stwierdzić, że jest to zadanie karkołomne, a może wręcz niemożliwe bo jak już będziesz myślał, że udało Ci się wymyślić wszystkie mozliwość to user wymyśli Ci kompletnie nowy


Wiem, że kupa, więc szukam jakiegoś sprytnego sposobu. Jeśli user doda, to szybko się zreflektuję i oprogramuję to. Wystarczy mi "nieomylność" na poziomie 99%.


Cytat
ale masz problem, narzuć użytkownikowi własny sposób wyświetlania - choćby przez combo boxa

1. że mam problem to wiem - dlatego piszę
2. pisałem, że to NIE WCHODZI W GRĘ
3. to co dla informatyka jest wygodne/oczywiste z punktu widzenia użytkownika niekoniecznie
4. mam około miliona rekordów archiwalnych, które też trzeba przeanalizować
goran
No nic. Pozostaje Ci tylko preg_match i kupa pisania wyrażeń. Powodzenia smile.gif.

Pozdr.
TomASS
Może się uda jakoś inaczej - np. jednym/dwoma wyrażeniami. Nie mów za wszystkich, to że nie wiesz jak zrobić, nie znaczy, że się nie da winksmiley.jpg
goran
questionmark.gif A czy ja pisałem za wszystkich? Piszę za siebie - wedle swojej widzy piszę z pełną odpowiedzialnością: nie - nie zrobisz tego jednym czy dwoma wyrażeniami i nie nie da się tego zrobić inaczej smile.gif

Pozdr.
TomASS
A jednak zrobiłem to jednym wyrażeniem:
  1. function godziny($godzina){
  2. if(ereg('[01]?([0-9]{1})(([\.:][0-9]{2})?)[-][01]?([0-9]{1})(([\.:][0-9]{2})?)',$godzina,$result)){
  3. return $result[0];
  4. }
  5. else return false;
  6. }


Dostaję teraz same godziny i dalej "naprawiam" do standardowej postaci (07:00-13:00)
  1. function standardOneHoure($jednaGodzina){
  2. $data = explode(':',$jednaGodzina);
  3. if(count($data)==1) $data[1] = '00';
  4. if(strlen($data[0])==1) $data[0] = '0'.$data[0];
  5. return $data[0].':'.$data[1];
  6. }
  7.  
  8. function standardHoure($godzina){
  9. $godzina = str_replace(' ','',$godzina);
  10. $godzina = str_replace('.',':',$godzina);
  11. $godziny = explode('-',$godzina);
  12. $godz1 = standardOneHoure($godziny[0]);
  13. $godz2 = standardOneHoure($godziny[1]);
  14. return $godz1.'-'.$godz2;
  15. }



smile.gif
goran
Nie nie zrobiłeś tego jednym zapytaniem.
Cytat(TomASS @ 18.09.2010, 22:40:21 ) *
Przykładowe "standardy" wpisywane przez użytkowników to:

Pomimo tego, ze jest ono bardzo ładne i załatwi dużą część to nie wszystkie bo jak sam napisałeś to tylko przykładowe standardy. Bo nie obsłuży ona zapisu np. siódma-dwunasta. A takie też się mogą zdarzyć i o nich pisałem. Niemniej gratulacje znajomości regexp'a - bardzo ładne wyrażenie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.