Autor | Zpráva | ||
---|---|---|---|
tito100 Profil |
#1 · Zasláno: 16. 4. 2011, 14:17:23
Zdravým .
mám retazec "func addMenuItem($link$name)" potrebujem z neho vytiahnuť názov funkcie a všetky argumenty. mám výraz / preg_match_all('/func\s([a-z|A-Z|_]+[\w]*)[\(|\s]+(\$([a-z|A-Z|_][\w]*)[,|\)|\s])?/i', 'func addMenuItem($link$name) ', $matches); ten mi však ziska len prvý argument. ja potrebujem aby to našlo všetky. vopred dakujem |
||
Joker Profil |
#2 · Zasláno: 16. 4. 2011, 15:13:02
tito100:
A co prostě přes strpos a substr získat všechno mezi první otevřenou závorkou a poslední uzavřenou závorkou a potom to pomocí explode rozsekat tím, čím se oddělují argumenty (dolar?) |
||
tito100 Profil |
#3 · Zasláno: 16. 4. 2011, 15:20:40
prišlo mi že regex sú rýchlejšie . trakisto som to mohol dať do dvoch regex , ale zas mi prišlo že jeden sa spracuje rýchlejšie ako dva. a ak je to tak, tak nevidím dôvod to robiť inač. a
|
||
Keeehi Profil |
#4 · Zasláno: 16. 4. 2011, 17:48:14
preg_match_all('~func\s([a-z_][\w]*)\s?\(((\$[a-z_][\w]*)\s*,?\s*)*\)~i', 'func addMenuItem ($link, $name);', $matches); |
||
Joker Profil |
#5 · Zasláno: 16. 4. 2011, 19:44:52
tito100:
„prišlo mi že regex sú rýchlejšie . trakisto som to mohol dať do dvoch regex , ale zas mi prišlo že jeden sa spracuje rýchlejšie ako dva.“ Tohle není tak snadné předpovědět, regulární výrazy, a preg_match_all dvojnásob, umějí být co do rychlosti pěkně záludné. Už se mi takhle povedlo nahradit několik regulárních výrazů jedním složitějším a následně zjistit, že to celé je daleko pomalejší. |
||
Časová prodleva: 13 let
|
0