Autor | Zpráva | ||
---|---|---|---|
andynewcastleth Profil |
Chci vytvořit v HTML tabulku, která by vypadala takto:
![]() Problém je, že já data dostávám jako string ve tvaru: Něco | Začátek: -| Konec: 12:00Něco | Začátek: 8:00 | Konec: -Něco | Začátek: 7:00 | Konec: 22:00........ Buňky jsou odděleny pomocí znaku |. Hlavní problém pro mě je identifikovat konec řádku. Konec řádku může být buď: Něco | Začátek: -| Konec: 12:00(tady)Něco | Začá....... (dvě nuly) Něco | Začátek: -| Konec: 12:30(tady)Něco | Začá....... (jedna nula) Něco | Začátek: -| Konec: -(tady)Něco | Začá........ (pomlčka) Něco | Začátek: -| Konec: -(tady)Něco-něco | Začá........ (Slovo "něco" rovněž může obsahovat pomlčku) |
||
NoxOne Profil |
#2 · Zasláno: 18. 1. 2020, 13:01:41
dej sem vzorek dat tak jak je dostaneš cca 3 řádky. Někdo používá na konci řádky CRLF
|
||
andynewcastleth Profil |
#3 · Zasláno: 18. 1. 2020, 13:13:24
Například tady kompletní data pro jednu tabulku:
Něco | Start: - | Konec: 17:00Něco něco | Start: 12:00 | Konec: 21:00Něco | Start: 10:00 | Konec: -Něco-něco | Start: - | Konec: 08:00Něco | Start: 02:00 | Konec: 12:00Něco-něco | Start: 08:00 | Konec: 14:00Něco | Start: 07:00 | Konec: 18:30Něco-něco | Start: 03:00 | Konec: 18:00Něco | Start: 06:00 | Konec: -Něco-něco | Start: 13:00 | Konec: 23:00Něco něco | Start: - | Konec: -Něco | Start: 09:00 | Konec: 13:00Něco | Start: - | Konec: -Něco | Start: 13:00 | Konec: 23:30 |
||
Radek9 Profil |
andynewcastleth:
Možná by to mohlo fungovat takhle: <?php $data = '...'; $lines = preg_split('/(?<= \| Konec\: -)|(?<= \| Konec\: \d{2}\:\d{2})/', $data); |
||
andynewcastleth Profil |
#5 · Zasláno: 18. 1. 2020, 16:28:37
Radek9:
To se nezdá být funkční: Array ( [0] => Něco [1] => | [2] => Start: [3] => - [4] => | [5] => Konec: [6] => 17:00Něco [7] => něco [8] => | [9] => Start: [10] => 12:00 [11] => | [12] => Konec: [13] => 21:00Něco [14] => | [15] => Start: [16] => 10:00 [17] => | [18] => Konec: [19] => - [20] ..... ) |
||
Radek9 Profil |
andynewcastleth:
Huh, zvláštní. Jaká verze PHP? Kódování? Mně to na PHP 5 i 7 normálně frčí a vyplivne to tohle: Array ( [0] => Něco | Start: - | Konec: 17:00 [1] => Něco něco | Start: 12:00 | Konec: 21:00 [2] => Něco | Start: 10:00 | Konec: - [3] => Něco-něco | Start: - | Konec: 08:00 [4] => Něco | Start: 02:00 | Konec: 12:00 [5] => Něco-něco | Start: 08:00 | Konec: 14:00 [6] => Něco | Start: 07:00 | Konec: 18:30 [7] => Něco-něco | Start: 03:00 | Konec: 18:00 [8] => Něco | Start: 06:00 | Konec: - [9] => Něco-něco | Start: 13:00 | Konec: 23:00 [10] => Něco něco | Start: - | Konec: - [11] => Něco | Start: 09:00 | Konec: 13:00 [12] => Něco | Start: - | Konec: - [13] => Něco | Start: 13:00 | Konec: 23:30 [14] => ) Kdyžtak sem ještě pošli tvůj kompletní kód. |
||
andynewcastleth Profil |
Radek9:
Aha, já jsem to jen včera rychle zkoušel v jednom z těch online PHP editorů. Ale dnes na mém localhostu/hostingu to již funguje OK. Zdá se, že tvé řešení skutečně odchytí všechny možné varianty a vše, na co mohu narazit. Děkuji mockrát za pomoc! |
||
NoxOne Profil |
#8 · Zasláno: 19. 1. 2020, 10:58:39
Radek9:
> andynewcastleth: > Možná by to mohlo fungovat takhle: <?php $data = '...'; $lines = preg_split('/(?<= \| Konec\: -)|(?<= \| Konec\: \d{2}\:\d{2})/', $data); Byl jsi rychlejší. Měj bych méně sedět u PC a dříve vstávat. PS: občas je lepší poslat data tak jak je dostaneš než se dlouze rozepisovat. :) |
||
Časová prodleva: 3 roky
|
0