|
|
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
|
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
|
Szukanie oprogramowania
|
©Pavel Kysilka - 2003-2024 |
maillinuxsoft.cz | Design:
www.megadesign.cz
|