Autor Zpráva
uzuzuzuiz
Profil *
zdravim jak by se toto EREG dalo prepsat na preg_match?

if (ereg("^[0-9]+$",$uprav))


dik za odpoved
mckay
Profil
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
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
uzuzuzuiz:
kde se da sehnat popis/manual
začít můžeš například na regularnivyrazy.info.
Amunak
Profil
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
Amunak:
Pro "~" také nemusíš přehazovat klávesnici - pravý alt + 1 (vedle středníku).
AM_
Profil
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
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
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
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
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.
holi
Profil
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
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';
Zlobily vám tam ty oddělovače možností (svislítka), uvnitř třídy možných znaků by musely být escapované.

Doplnila jsem regulár, aby byl oddělovač nepovinný, jako v [#13]
Úprava v reakci na srigiho ([#17]).
holi
Profil
Aha děkuji, sice ten zápis moc nechápu, ale jdu to vyzkoušet.
holi
Profil
btw zapoměl jsem že ve scriptu převádím pismena MAC adresy na velké. Ale to je vedlejší.
srigi
Profil
[#14] Tori
Myslim ze by bolo jednoduchsie namiesto zapisu mnoziny povolenych znakov
[a-fA-F0-9]
pouzit modifikator i - ignore case.
Tori
Profil
srigi:
Díky, nevzpomněla jsem si.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0