Autor | Zpráva | ||
---|---|---|---|
janbarasek Profil |
#1 · Zasláno: 19. 4. 2014, 12:06:35
Ahoj,
v proměnné si držím matematický zápis nějakého příkladu, například: $q = '5^2'; eval() ), tak tento zápis bude PHP chápat nějak divně, defacto znak "^" interpretuje jako logickou podmínku XOR, která vždy vyhoví.
Lze nějak jednoduše tento výraz přepsat tak (asi regulárním výrazem), aby se vrátil zpět zápis ve smyslu $q = 'pow(5, 2)'; ?
Zkoušel jsem něco vymyslet, ale nevím jak to řešit v případě, kdy chci umocnit delší řetězec, třeba závorku: $q = '5^(2+x)+x'; $q = 'pow(5, (2+x))+x'; Napadá někoho z vás nějaké elegantní řešení? Lámu si nad tím hlavu už třetí den a na nic použitelného jsem nepřišel. Děkuji. |
||
juriad Profil |
#2 · Zasláno: 19. 4. 2014, 12:16:29 · Upravil/a: juriad
Jelikož regulární výrazy neumí aritmetiku (počítání závorek) nelze to nijak elegantně udělat jen pomocí reg. výrazu.
Použitelné je jen postavit si aritmetický strom a ten pak vyhodnotit. http://en.wikipedia.org/wiki/Shunting-yard_algorithm http://stackoverflow.com/a/4590047 |
||
Časová prodleva: 11 let
|
0