ja vidim chybu hned ve uvedenem r.v. (pokud se z toho ma nekdo neco naucit, tak at je to perfektni, ze :) )
do mailu urcite nepatri mezery!
Netusim, na jake verzi PHP jste to zkousel, ale v tech co mam ja to nefunguje... Jinak po oprave chybicky souhlasim s tim, ze tohle se da uz rozumne pouzivat :)
Teple slovo editora: ty mezery tam samozrejme puvodne nepatri, musela jsem je tam ale dat, aby se vyraz zawrapoval (jinak se clanek nevejde na sirku, jiste jste si toho vsimli v diskusi u minuleho dilu, jak se nechutne roztahla kvuli nejakymu brutalnimu vyrazu).
Myslela jsem, ze kdyz je dam jen z jedne strany kolem plusu (a v prikladu ke stazeni samozrejme nebudou vubec), bude kazdemu jasne, ze je to editacni berlicka, ale holt jsem to tam asi mela napsat, sorry.
No tak zaprve, nechapu proc delas takove kejkle s a-zA-Z, kdyz muzes pouzit eregi* a je to
Zadruhe, nemyslim si ze by se v hranatych zavorkach musely specialni znaky predlamovat. Tedy misto toho tveho [\.\+] atd bych dal jen [.+], protoze v hranatych zavorkach se podle me nic takovehohle nemusi.
Nehlede na to, ze kdyz to takto napises v PHP, tak to uz vubec nebude fungovat protoze kdyz mas text v uvozovkach tak se regularni vyraz predlamuje dvojitym lomitkem, tedy \\
Uvnitř hranatých závorek se skutečně escapovat nemusí. Mám pocit, že autor regulárním výrazům moc nerozumí a tak raději escapuje vše, co se mu zdá podezřelé. Např. i pomlčku u smajlíků. Projde to proto, že "a `\' followed by any other character(!) (matching that character taken as an ordinary character, as if the `\' had not been present(!)" (man regexp)
Sekvence \. v PHP fungovat bude, ale opět spíše náhodou, protože "if you try to escape any other character, the backslash will be printed too!" (PHP manuál - language.types.string).
Takže fungovat to bude, ale je to dokonalé matení čtenáře.
1>jestli pouzijes a-zA-Z v Ereg, nebo a-z v EregI, je to uplne jedno :) obe metody jsou i v podstte stejne rychle.
2> Timhle jsem se take zabyval... myslel jsem si ze to tak je, ale nefungovalo to. S \ to funguje. Mozna mam nejakou hybridni formu php, ale u me je to tak. Zkusim to nekde jinde a kdyztak prikomentuju :)
3> Funguje to :)
diky za kritiku :)
sorry ale taky si rejpnu ...
ad 2]
hybridni verzi php - to slysim prvne ;o]]]]]
... ale vono to bude spis o tom, ze escapovat se musi znaky se spec. vyznamem ... a to jsou v sekci [ ] znaky:
] - ukoncuje skupinu znaku,
^ (pokud je hned za otviraci zavorkou),
- (pokud neni nazacatku nebo na konci skupiny znaku),
a samozrejme \
ostatni veci v hranatych zavorkach neni treba escapovat, a pokud tam potrebujes mit pomlcku, tak je lepsi psat [abc-] misto [ab\-c]
takze pomlcka ma specialni vyznam jen v hranatych zavorkach pokud stoji mezi dvema spec. znaky a symbolizuje "znaky od/do" ... jinde ji neni treba escapovat ...
ad "je to uplne jedno"]
to neni az tak pravda (zvlaste pak u toho zbytecneho escapovani znaku) ....
jedno to neni pokud jde o citelnost kodu ....
T.
Tomas napsal: 'ad "je to uplne jedno"]
to neni az tak pravda (zvlaste pak u toho zbytecneho escapovani znaku) ....
jedno to neni pokud jde o citelnost kodu ....'
To ze je to uplne jedno se vztahuje k Ereg a a-zA-Z vs. EregI a-z... chce to jen trochu myslet :)
Co se tyce escapovani znaku, nevim co za tim stoji, ale na serveru nemusim a na domacim musim. Kdyz nakouknu do literatury (konkretne PHP a MySQL - Rozvoj webovych aplikaci) tak vidim napr. [a-zA-Z0-9\-\.] nebo [a-zA-Z0-9\-] apod. I v jinych publikacich to tak je (pravda, nekde ne). Takze je to nekde v necem individualni... nevim v cem, ale dostanu to :)
Tomas napsal: 'ad "je to uplne jedno"]
to neni az tak pravda (zvlaste pak u toho zbytecneho escapovani znaku) ....
jedno to neni pokud jde o citelnost kodu ....'
To ze je to uplne jedno se vztahuje k Ereg a a-zA-Z vs. EregI a-z... chce to jen trochu myslet :)
Co se tyce escapovani znaku, nevim co za tim stoji, ale na serveru nemusim a na domacim musim. Kdyz nakouknu do literatury (konkretne PHP a MySQL - Rozvoj webovych aplikaci) tak vidim napr. [a-zA-Z0-9\-\.] nebo [a-zA-Z0-9\-] apod. I v jinych publikacich to tak je (pravda, nekde ne). Takze je to nekde v necem individualni... nevim v cem, ale dostanu to :)
Heh, kdyz ty to vis tak jiste, tak proc to neuvedes na pravou miru, a nepovis nam na jakem nastaveni to vlastne zalezi.
PS: Nevim jak ty, ale ja nevim jiste ani to jestli zitra vyjde slunce ... Myslim si, ze jedina vec, cim si muze byt clovek jistej je, ze jednou jiste zemre ;o]]] Takze kdybych se ridil heslem "kdyz neco nevim jiste nevotviram hubu", tak k cemu bych pak tu hubu asi mel?
toto bych resil v perlu a komodu. Komodo ma vestavej wizard na regularni vyrazy, takze je mozny si tim pohrat a proverit si, jestli to jede. wizard je pro skalni developery s barvickama a napovedou . . . no a v php je mozny pouzit perlovskej regularni vyraz : preg_match( $reg_perl_syntax, $zkoumanej_text, $matches);
matches vraci to co v perlu $1, $2, $3 ....
< End Of Story >
Skvele, ale ma to jednu mouchu. Ja v textu skutecne pouzivam zavorky (alespon nekde) a pokud text v zavorce konci smajlikem (takhle :-)) a vy na nej vypustite svoji funkci, zmizi ukonceni zavorky. (Nastesti pisu smajliky jen s jednou pusou a ne ty mutovane varianty, takze neni treba nedeterministicky zasobnikovy automat k rozlusteni textu.)
Jo to je pravda, pri psani clanku jsem na to myslel. Uz jsem ale nechtel kuli tomu menit priklad. I pro cloveka je nekdy slozity poznat co je konec zavorky a co dalsi usmev :) Da se to resit tak, ze se najde kde neni zavorka ukoncena a da se ) k nejblizsimu smajlu. Nechtel jsem to ale do clanku zahrnovat, protoze bych ho dost roztahnul veci, ktera nema s regexpama zas tolik spolecnyho