LINUXSOFT.cz
Nazwa użytkownika: Hasło:     
    CZ UK PL

> Komentarze :: Poradna PHP - regulérní výrazy, ereg

PHP - regulérní výrazy, ereg 1.4.2011 22:50
Honza Neřeknu

Dobrý den
potřeboval bych pomoc s podmínkou na validnost textu zadaného uživatelem.
Text smí v prvním případě obsahovat znaky [a-z A-Z 0-9] a pomlčku, ale na na začátku a na konci.
Ve druhém případě smí obssahovat jen znaky [a-z A-Z 0-9]
jejich počet je libovolný (ověřuji jinde)

Formát:
if (!ereg (' a-z A-Z 0-9 ', $_POST['reg_name']))
{
echo "Špatně!";
}

Vlastně potřebuji 2 takové podmínky, vstupní parametr je $_POST['reg_name'] a $_POST['reg_pass'], ale to si upravím sám :)
Díky moc všem za odpověď

Re: PHP - regulérní výrazy, ereg 3.4.2011 01:39
Aleš Hakl

[a-zA-Z0-9][-a-zA-Z0-9][a-zA-Z0-9]

S poznamkou, ze LC_COLLATE musi byt takovy, aby to odpovidalo vasi predstave o tom, co to znamena a-z. A ta pomlcka musi byt v te mnozine uvedena budto jako prvni nebo jako posledni.

Re: PHP - regulérní výrazy, ereg 18.4.2011 15:43
Petr Sedláček

Nemělo by být spíše ^[a-zA-Z0-9][-a-zA-Z0-9]*[a-zA-Z0-9]$ ? Ještě s případnou OR větví pokud nás zajímají i jednopísmenná zadání.

Re: PHP - regulérní výrazy, ereg 21.4.2011 04:18
Aleš Hakl

Melo :)

Re: PHP - regulérní výrazy, ereg 18.4.2011 17:33
Marek Beleščiak

pomlcka moze byt hocikde v [ ] ale musi sa zadat ako \-

Re: PHP - regulérní výrazy, ereg 21.4.2011 04:16
Aleš Hakl

Vsimnete si, ze dotaz je na ereg a nikoli PCRE.

PHP sice z nejakeho pomerne podivneho duvodu pouziva vlastni implementaci POSIXovych regularnich vyrazu, ale je to jenom lehce upravena klasicka implementace od Henryho Spencera. Vsimete si implementaci funkci p_bracket() a p_b_term() v php/ext/ereg/regex/regcomp.c, opravdu backslash nijak specialne nezpracovavaji.

A nakonec citujme The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition (neboli Single UNIX Specification v3), Base Definitions, 9.3.5.7, posledni dva odstavce:

"""The hyphen character shall be treated as itself if it occurs first (after an initial '^', if any) or last in the list, or as an ending range point in a range expression. As examples, [ . . . ]. To use a hyphen as the starting range point, it shall either come first in the bracket expression or be specified as a collating symbol; for example, "[][.-.]-0]", which matches either a right bracket or any character or collating element that collates between hyphen and 0, inclusive.

If a bracket expression specifies both '-' and ']', the ']' shall be placed first (after the '^', if any) and the '-' last within the bracket expression."""


KOMENTARZE
PHP - regulérní výrazy, ereg 1.4.2011 22:50 Honza Neřeknu
  L Re: PHP - regulérní výrazy, ereg 3.4.2011 01:39 Aleš Hakl
    |- Re: PHP - regulérní výrazy, ereg 18.4.2011 15:43 Petr Sedláček
    | L Re: PHP - regulérní výrazy, ereg 21.4.2011 04:18 Aleš Hakl
    L Re: PHP - regulérní výrazy, ereg 18.4.2011 17:33 Marek Beleščiak
      L Re: PHP - regulérní výrazy, ereg 21.4.2011 04:16 Aleš Hakl
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
> Szukanie oprogramowania
1. Pacman linux
Download: 4791x
2. FreeBSD
Download: 8985x
3. PCLinuxOS-2010
Download: 8488x
4. alcolix
Download: 10805x
5. Onebase Linux
Download: 9568x
6. Novell Linux Desktop
Download: 0x
7. KateOS
Download: 6144x

1. xinetd
Download: 2331x
2. RDGS
Download: 937x
3. spkg
Download: 4549x
4. LinPacker
Download: 9802x
5. VFU File Manager
Download: 3116x
6. LeftHand Mała Księgowość
Download: 7002x
7. MISU pyFotoResize
Download: 2701x
8. Lefthand CRM
Download: 3486x
9. MetadataExtractor
Download: 0x
10. RCP100
Download: 3004x
11. Predaj softveru
Download: 0x
12. MSH Free Autoresponder
Download: 0x
©Pavel Kysilka - 2003-2024 | mailatlinuxsoft.cz | Design: www.megadesign.cz