Autor | Zpráva | ||
---|---|---|---|
uzuzuzuiz Profil * |
#1 · Zasláno: 3. 4. 2010, 12:40:07
zdravim jak by se toto EREG dalo prepsat na preg_match?
if (ereg("^[0-9]+$",$uprav)) dik za odpoved |
||
mckay Profil |
#2 · Zasláno: 3. 4. 2010, 12:55:15
uzuzuzuiz:
Takto? <?php if(preg_match("/^[0-9]+$/", $uprav)) ?> Ty lomítka na konci jsou tzv. delimetry, jsou povinné při používání preg_x |
||
Majkl578 Profil |
#3 · Zasláno: 3. 4. 2010, 18:33:42
Jen aby nedošlo k mystifikaci, delimitery nemusí být /, teoreticky to může být cokoliv, jen se daný znak musí ve výrazu escapovat. Já obvykle používám ~.
Tvůj kód by byl nejlepší takto: if (preg_match('~^\d+$~', $uprav)) |
||
uzuzuzuiz Profil * |
Majkl578:
sice jsem to nezkousel ale verim ze to bude fungovat spis me zajima kde se da sehnat popis/manual toho vyrazu protoze ten tvuj zapis je "jednodussi" jak ten muj puvodni a celkem by me zajimalo jak na to xD Moderátor Majkl578: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
|
||
panther Profil |
#5 · Zasláno: 3. 4. 2010, 19:18:47
|
||
Amunak Profil |
#6 · Zasláno: 4. 4. 2010, 13:05:37
Mimochodem často se využívá také # - je jednodušší ho napsat (nemusí se přehazovat klávesnice - stačí pravý alt a X) a funguje stejně...
|
||
mckay Profil |
#7 · Zasláno: 4. 4. 2010, 13:48:25
Amunak:
Pro "~" také nemusíš přehazovat klávesnici - pravý alt + 1 (vedle středníku). |
||
AM_ Profil |
#8 · Zasláno: 4. 4. 2010, 14:48:27
Amunak:
všechny delimitery fungují stejně :) Volba delimiteru spočívá především ve výběru znaku, který ve výrazu nebudeme potřebovat. U jednoduchých výrazů jako tento je to tedy úplně jedno (nevím, proč se uchytilo zrovna lomítko /, tuším, že některá z prvních specifikací UNIXu stanovila jako delimiter právě lomítko a až pak se to uvolnilo, ale to nevím jistě). Také s oblibou používám ~, protože to se jinde používá skutečně zřídka, s hash křížkem # se člověk setká mnohem častěji. |
||
Amunak Profil |
#9 · Zasláno: 5. 4. 2010, 18:51:37
AM, mckay:
Vlastně pokud bych chtěl použít delimiter ve výraze, musel bych ho pak escapovat? Mimochodem tušíte někdo proč se vlastně musí používat delimitery? |
||
nightfish Profil |
#10 · Zasláno: 5. 4. 2010, 19:45:56
Amunak:
„Mimochodem tušíte někdo proč se vlastně musí používat delimitery?“ předpokládám, že tím důvodem je možnost použití modifikátorů |
||
AM_ Profil |
#11 · Zasláno: 5. 4. 2010, 23:24:35
Amunak:
„Vlastně pokud bych chtěl použít delimiter ve výraze, musel bych ho pak escapovat?“ Přesně tak, proto volíš takový znak, který ve výraze nepoužiješ. „Mimochodem tušíte někdo proč se vlastně musí používat delimitery?“ Regulární výrazy vzešly z UNIXu, kde se celý výraz obecně nemusí uzavírat do uvozovek a od ostatních příkazů je ohraničují právě delimitery. Od toho jsou zanesené i do PHP, ikdyž mám pocit, že to šlo udělat lépe (nechat např. modifikátory jako další parametr), jenže holt je to takhle. |
||
Amunak Profil |
#12 · Zasláno: 6. 4. 2010, 10:53:04
nightfish, AM:
Díky za rozšíření obzorů. AM: „mám pocit, že to šlo udělat lépe (nechat např. modifikátory jako další parametr)“ Souhlasím. |
||
Časová prodleva: 1 rok
|
|||
holi Profil |
#13 · Zasláno: 16. 4. 2011, 22:04:22
Dobrý den, z toho co jsem tu četl a po shlédnutí vámi přidanými odkazy jsem tak nějak pochopil, že zápis neboli definice toho co vlastně preg_match má hledat je úplně stejná jako u eregu, jen se musí přidat ty delimetry. Mám script kterým kontroluji správný zápis mac adresy, který jsem stáhl a původně v něm byl ereg, rozhodl jsem se to předělat na preg_match z důvodu nepodpory novějšího php, jenže mi to nějak nefunguje a já nevím proč.
Mohli by jste mi to zkontrolovat prosím ? <?php preg_match("~([0-9|A-F]{2})[.|:|-]?([0-9|A-F]{2})[.|:|-]?([0-9|A-F]{2})[.|:|-]?([0-9|A-F]{2})[.|:|-]?([0-9|A-F]{2})[.|:|-]?([0-9|A-F]{2})~", $mac, $val) ?> Ještě chci mimo téma zmínit že mi tato diskuse v google chrome padá, tento příspěvek píši už po druhé. Z důvodu, když kliknu na vložení pre tagů a následného odentrování( pro přehlednost) mi vyskočí chybová hláška ve stylu "Jádro prohlížeče spadlo" a takový odpudivý smajlík. btw tato chyba se mi nestala poprvé. Předem děkuji za odpovědi. |
||
Tori Profil |
#14 · Zasláno: 16. 4. 2011, 22:27:05 · Upravil/a: Tori
holi:
Opomínáte možnost zápisu a-f malými písmeny. Vzorec (dvě číslice)(oddělovač) se vám opakuje pětkrát - toho lze využít: $regex = '~([a-f0-9]{2}[.:-]?){5}[a-f0-9]{2}~i'; Doplnila jsem regulár, aby byl oddělovač nepovinný, jako v [#13] Úprava v reakci na srigiho ([#17]). |
||
holi Profil |
#15 · Zasláno: 16. 4. 2011, 22:34:25
Aha děkuji, sice ten zápis moc nechápu, ale jdu to vyzkoušet.
|
||
holi Profil |
#16 · Zasláno: 16. 4. 2011, 22:58:40
btw zapoměl jsem že ve scriptu převádím pismena MAC adresy na velké. Ale to je vedlejší.
|
||
srigi Profil |
#17 · Zasláno: 17. 4. 2011, 12:07:45
[#14] Tori
Myslim ze by bolo jednoduchsie namiesto zapisu mnoziny povolenych znakov [a-fA-F0-9] |
||
Tori Profil |
#18 · Zasláno: 17. 4. 2011, 12:35:49
srigi:
Díky, nevzpomněla jsem si. |
||
Časová prodleva: 13 let
|
0