Autor | Zpráva | ||
---|---|---|---|
mimochodec Profil |
Pomohl by mi prosím někdo s ověřením pomocí reguláru? Potřebuju vědět, jestli text je v tomto tvaru:
01:39:05,602 --> 01:39:09,121 Hodiny jsou povinně dvojmístné, přípustná hodnota je 00-99. Minuty a sekundy 00-59, desetinná místa povinně tři. Povinný je i ten text mezi oběma časy. Pokud text bude odpovídat zadání, potřeboval bych z něj vytáhnout ty dva časy. Ty časy z toho samozřejmě můžu dostat i jinak, kdyby s tím byl problém. Jen co jsem tak nějak četl, chápu to tak, že by se to dalo spojit s tím ověřením tvaru zápisu. |
||
Tori Profil |
#2 · Zasláno: 12. 4. 2012, 10:23:19
Na jeden časový údaj by šel použít třeba tenhle výraz:
(\d{2}:\d{2}:[0-5]{1}\d,\d{3}) Stačí doplnit znaky uprostřed, druhý čas, oddělovače okolo.
|
||
mimochodec Profil |
Tori:
$v = "01:39:05,602"; if (preg_match("/\d{2}:\d{2}:[0-5]{1}\d,\d{3}/", $v)) { echo "souhlas."; } Tímhle projdou i řetězce s přilepeným čímkoliv po stranách, což nechci. A když ta lomítka na začátku a na konci zruším, dostanu: Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash |
||
Tori Profil |
#4 · Zasláno: 12. 4. 2012, 11:07:19
|
||
Joker Profil |
#5 · Zasláno: 12. 4. 2012, 11:07:52
mimochodec:
„Tímhle projdou i řetězce s přilepeným čímkoliv po stranách, což nechci.“ V tom případě patří ještě na začátek ^ a na konec $ /^\d{2}:\d{2}:[0-5]{1}\d,\d{3}$/ |
||
mimochodec Profil |
-- smazáno. Neumím číst. Díky.
Tori: To je přesně to, do čeho se mi kvůli jednomu reguláru ročně nechtělo pronikat. Vyrobil jsem toto a zdá se, že to funguje. Díky oběma. if (preg_match("/^\d{2}:\d{2}:[0-5]{1}\d,\d{3} --> \d{2}:\d{2}:[0-5]{1}\d,\d{3}$/", $v)) { |
||
Tori Profil |
mimochodec:
A teď ještě ty části, které odpovídají časům, dejte do kulatých závorek. Pak je rovnou najdete ve $v[1] a $v[2] a máte zároveň validaci i vytažení dat, jak jste chtěl. ↓ jo pardon, přehlédnutí, spěchala jsem. |
||
mimochodec Profil |
#8 · Zasláno: 12. 4. 2012, 12:29:28
Tori:
„Pak je rovnou najdete ve $v[1] a $v[2]“ Ve $v ne, ale stačilo přidat toto a výstup je v $out. Díky. if (preg_match("/^(\d{2}:\d{2}:[0-5]{1}\d,\d{3}) --> (\d{2}:\d{2}:[0-5]{1}\d,\d{3})$/", $v, $out)) { |
||
Časová prodleva: 12 let
|
0