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

> Komentarze :: Poradna Regulérní výrazi v PHP

Regulérní výrazi v PHP 27.7.2011 16:45
Honza Neřeknu

Zdravím,
Potřeboval bych regulérní výraz, který zjistí jestli se daný text skládá ze znaků: [a-z] [A-Z] [0-9]

Pořadí není určeno, a znaků muže být 0 - nekonečno

například:
"asdASD123" projde
"asd" projde
"135as" projde
"" projde
"asdpý" neprojde (kvůli ý)

zkousel jsem toto, ale nefunguje :(
if (!ereg("^[a-z]|[A-Z][0-9]*$", $text)) die('Chyba!');

Re: Regulérní výrazi v PHP 28.7.2011 13:04
Aleš Hakl

[0-9A-Za-z]*

S obvyklym upozornenim, ze zalezi na tom, co si predstavujete pod A-Z a ze to nemusi byt nutne totez, co to pri danem nastaveni LC_COLLATE znamena.

Re: Regulérní výrazi v PHP 29.7.2011 10:13
Honza Neřeknu

Diky mooc :)

Re: Regulérní výrazi v PHP 30.7.2011 19:28
Honza Neřeknu

Hele tak to nefungovalo :D
ale kdyz jsem to upravil na:

^[0-9A-Za-z]*$

tak uz to fungovalo :) jinak mam Apache pod win, complex web neco jestli znas, tak LC_COLLATE neresim ne?

Re: Regulérní výrazi v PHP 31.7.2011 14:49
Aleš Hakl

Zajimave, regcomp.c co je pribaleny k PHP to opravdu nijak neresi, takze na LC_COLLATE proste nezalezi a ty rozsahy jsou dany proste ASCII.

699 	start = p_b_symbol(p);
700 	if (SEE('-') && MORE2() && PEEK2() != ']') {
701 	  /* range */
702 	  NEXT();
703 	  if (EAT('-'))
704 	    finish = '-';
705 	  else
706 	    finish = p_b_symbol(p);
707 	} else
708 	  finish = start;
709 	/* xxx what about signed chars here... */
710 	REQUIRE(start <= finish, REG_ERANGE);
711 	for (i = start; i <= finish; i++)
712 	  CHadd(cs, i);

Jinak pokud si spravne pamatuji, tak autori PHP nedoporucuji ty "POSIXove" ereg_* regularni vyrazy pouzivat a misto nich pouzivat PCRE. Jednak (jak uz vidno z kodu vyse) to nejake unicode zrovna dvakrat neresi a jednak je chovani v mnohych pripadech dokumentovano leda tim, ze se clovek muze podivat do zdrojaku te pribalene verze a doufat, ze PHP nekde nepouziva systemovou implementaci (ktera je typicky fork toho stejneho kodu od H. Spencera, ovsem s uplne jinou skupinou bugu).

Zaver: pouzivejte PCRE


KOMENTARZE
Regulérní výrazi v PHP 27.7.2011 16:45 Honza Neřeknu
  L Re: Regulérní výrazi v PHP 28.7.2011 13:04 Aleš Hakl
    |- Re: Regulérní výrazi v PHP 29.7.2011 10:13 Honza Neřeknu
    L Re: Regulérní výrazi v PHP 30.7.2011 19:28 Honza Neřeknu
      L Re: Regulérní výrazi v PHP 31.7.2011 14:49 Aleš Hakl
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
> Szukanie oprogramowania
1. Pacman linux
Download: 4791x
2. FreeBSD
Download: 8984x
3. PCLinuxOS-2010
Download: 8488x
4. alcolix
Download: 10805x
5. Onebase Linux
Download: 9568x
6. Novell Linux Desktop
Download: 0x
7. KateOS
Download: 6143x

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: 2700x
8. Lefthand CRM
Download: 3486x
9. MetadataExtractor
Download: 0x
10. RCP100
Download: 3002x
11. Predaj softveru
Download: 0x
12. MSH Free Autoresponder
Download: 0x
©Pavel Kysilka - 2003-2024 | mailatlinuxsoft.cz | Design: www.megadesign.cz