Autor Zpráva
matlala
Profil
Ahoj,
potřeboval bych, pomoct s kontrolou uživatelského jména. Reguláry mi skoro nejdou, je to hezky složité, pokouším s eje pochopit už tak půl roku a moc mi to nejde.

Takže jméno může obsahovat pouuze znaky a-z,A-Z(vč háčků a čárek),čísla 0-9, tečku, _, @.
Mám něco takového jen na zkoušku pak to zdokonalím, ale nejde mi to:

if(!ereg("([a-zA-Z0-9\._-@]*)", "slovo.ad45t-_@")){
echo "Jméno může obsahovat pouze znaky a-z,A-Z, čísla a tečku<br>";
}


Předem díky za rady.
petr
Alphard
Profil
zkuste (tohle bere i -, nevím jestli to tak chcete)
preg_match ("~^[\w.@ěščřžýáíéúůóňťď-]+$~iu",  "testovaný řetězec")
matlala
Profil
e-e to nebude ono
Yur4Y
Profil
Alphard
Používate tam české znaky, nebude treba použiť aj modifikátor u?

matlala
Mali by ste sa vyhnúť ereg* funkciám a používať preg_* funkcie.
matlala
Profil

Alphard
Používate tam české znaky, nebude treba použiť aj modifikátor u?


Co to je, nikdy jsme to neslyšel


matlala
Mali by ste sa vyhnúť ereg* funkciám a používať preg_* funkcie.


Proč přesně? taky nevisím rozdíl, ale v tomto jsem amatér, reguláry mi nejsou, pořebuju pouze zkontrolovat nick.
Alphard
Profil
Yur4Y:
Může být, abych pravdu řekl, reguláry s českými znaky nejsou moje silná stránka. Manuál se o u zmiňuje v souvislosti s utf-8, nevím, jak se to bude chovat např. s iso-8859-2. Nevsadil bych na správnou interpretaci \w a parametr i s dikritikou.

matlala:
e-e to nebude ono
Psal jsem zkuste. A napište, co nefunguje.
matlala
Profil
Pořád mi to nejde
if(!preg_match ("~^[\w.@ěščřžýáíéúůóňťď-]+$~iu",  "testovaný řetězec")){
echo "Jméno může obsahovat pouze znaky a-z,A-Z, čísla a tečku<br>";
}


jinak kódování mám samo sebou UTF-8, pro portál kde budou psát lidi třeba i ze Slovenska a odjinud to byt musí.
Joker
Profil
Co znamená "nejde"?
Chybí tam zpětné lomítko před tečkou, řekl bych.
Mastodont
Profil
matlala
Ereg funkce budou brzy z PHP vypuštěny, proto by se už nově neměly do kódu dávat. Navíc jsou pomalejší.
matlala
Profil
Re:Mastodont:
Aha a jaká je náhrada třeba za obyčejný ereg aby fungovala stejně-ověření mailu a icq čísla
Majkl578
Profil
matlala
treba obycejny preg_match, je potreba ale nepatrne upravit vyraz
matlala
Profil
jak třeba?, tady kus kodu.
kontrola mailu:
$cast1 = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]';
$cast2 = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';
if(!eregi("^$cast1+(\\.$cast1+)*@($cast2?\\.)+$cast2\$", $email)){
$chyba .=  $chyba3;
}


kontrola ICQ(čísla 8-10):
if($icq) {
$icq = str_replace("-","",$icq);
if(!eregi("^[0-9]{8,10}$",$icq)) {
$chyba .=  $chyba10;
}
}

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: