Autor Zpráva
MagicPowa
Profil
Dobrý den, už hodně dlouho se s tím trápim tak píšu sem, doufám že se najde někdo kdo bude ochoten pomoci.

Takže můj problém je ohledně regulárního výrazu na přihlašovací jméno při registraci. Moje požadavky jsou aby přihlašovací jméno mohlo být složeno z (čísel 0-9 nebo abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ nebo - nebo _ nebo by mohlo obsahovat mezeru) = to jsou všechno povolené znaky, které v loginu mohou být.

Ostaní znaky jako "ěščřžýáú)'"!¨§ tečka" + všechny ostatní nejsou povolený. Ještě bych chtěl aby minimální délka byla alespoň 3 znaky.

Mám svůj script:

if(!eregi("[[:space:]abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ0123456789_-]{3,}$", stripslashes(trim($_POST['prihlasovaci_jmeno'])))) {
echo "Jméno nesmí obsahovat speciální znaky";
} else {
$prihlasovaci_jmeno = $_POST['prihlasovaci_jmeno'];
}

Když někdo zadá přihlašovací jméno:
střecha = klidně ho to pustí dál i když tam je Ř
kočka = nepustí
kočcka = pustí i když tam je Č

=> když je nepovolený písmeno první, druhé nebo třetí od konce slova tak se to zastaví a nepokračuje dál jen vyhodí echo, ale jakmile je nepovolený znak čtvrtý, pátý atd. od konce tak ho to nenajde. Jakto, má to co dočinění s {3,}? Jak se tomu vyvarovat aby to kontrolovalo v celém slově + ještě nevím jak zavést jen obyčejnou tečku "." do povolených znaků, nechci přes [[:punct:]], protože to obsahuje .,;:-.

Děkuji moc, už si nevím rady.
Mastodont
Profil
V tom reguláru máš sice $ jako konec řetězce, ale na začátku ti chybí ^ (začátek řetězce). Čili to opravdu kontroluje jen tři poslední písmena.
MagicPowa
Profil
Děkuji moc, zdá se že to pomohlo.

Ještě dotaz, jak zakomponovat do povolených znaků tečku "."? bez užití [[:punct:]]
MagicPowa
Profil
Hmm, tak nic, můžu se registrovat třeba pod otazníkama... přitom je to naprosto stejný jako to bylo, nechápu to jednou to jde a jednou ne.
ninja
Profil
"^[a-z0-9\._ -]{3,}&"

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