Ahoj, nedaří se mi vytvořit regulární výraz, kterým bych otestoval, zda je zadaný řetězec matematickým číselným výrazem, který může obsahovat pouze číslice, operátory +, -, *, /, ^, dále kulaté závorky ( a ) a také řetězec sqrt (nikoliv třeba sqr). Smysluplnost výrazu netestuji, stačí mi pouze výše uvedené podmínky. Já jsem zkusil toto:
preg_match('/^[0-9*-\/^\+\(\)sqrt]+$/', $vstup)Ale to umožňuje zadat i to sqr...
Máte nápad?
Offline
↑ surovec:
Ahoj, ujistím se: následující řetězce tedy považuješ taky za platné výrazy?
+*2
3)(
Ale neznám syntaxi php, podle mě v hranatých závorkách uvádíš jen znaky a ne celé řetězce, takže ti to asi uzná třeba i výraz "q" apod.
možná bys potřeboval něco jako ([...] | sqrt )*
Offline
↑ check_drummer:
Jj, jde mi jen o to, aby uživatel nemohl zadávat nějaké svoje hackerské příkazy (obsahující třeba příkaz DELETE ;-)), ale aby tam bylo možné zadat jednoduchý matematický výraz.
Dal jsem to sqrt do závorky a už to dělá co má, díky za reakci!
Offline
↑ surovec:
Akorát pozor, že pomocí některých znaků výrazu můžeš taky způsobit hackování - třeba dvě dělítka za sebou (//) může někdy znamenat komentář.... A ten když vložíš do kódu může způsobit taky paseku.
Offline