Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][reg]Wyciągnięcie z treści, przedziału godzinowego
TomASS
post 18.09.2010, 21:40:21
Post #1





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


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.



--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
goran
post 18.09.2010, 21:44:59
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 2
Dołączył: 17.09.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Pawel_W
post 18.09.2010, 21:47:05
Post #3





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

Ostrzeżenie: (0%)
-----


ale masz problem, narzuć użytkownikowi własny sposób wyświetlania - choćby przez combo boxa winksmiley.jpg
Go to the top of the page
+Quote Post
goran
post 18.09.2010, 21:51:02
Post #4





Grupa: Zarejestrowani
Postów: 23
Pomógł: 2
Dołączył: 17.09.2010

Ostrzeżenie: (0%)
-----


Przecież napisał, że nie może.
Go to the top of the page
+Quote Post
TomASS
post 18.09.2010, 22:05:40
Post #5





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


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ć

Ten post edytował TomASS 18.09.2010, 22:06:28


--------------------
Go to the top of the page
+Quote Post
goran
post 18.09.2010, 22:33:28
Post #6





Grupa: Zarejestrowani
Postów: 23
Pomógł: 2
Dołączył: 17.09.2010

Ostrzeżenie: (0%)
-----


No nic. Pozostaje Ci tylko preg_match i kupa pisania wyrażeń. Powodzenia smile.gif.

Pozdr.
Go to the top of the page
+Quote Post
TomASS
post 18.09.2010, 23:14:51
Post #7





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
goran
post 18.09.2010, 23:47:10
Post #8





Grupa: Zarejestrowani
Postów: 23
Pomógł: 2
Dołączył: 17.09.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
TomASS
post 21.09.2010, 16:29:23
Post #9





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


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

Ten post edytował TomASS 21.09.2010, 16:29:53


--------------------
Go to the top of the page
+Quote Post
goran
post 22.09.2010, 17:11:00
Post #10





Grupa: Zarejestrowani
Postów: 23
Pomógł: 2
Dołączył: 17.09.2010

Ostrzeżenie: (0%)
-----


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

Ten post edytował goran 22.09.2010, 17:12:09
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:37