Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 06. 08. 2024 21:18

surovec
Příspěvky: 1174
Reputace:   25 
 

Regulární výraz v PHP

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:

Code:

preg_match('/^[0-9*-\/^\+\(\)sqrt]+$/', $vstup)

Ale to umožňuje zadat i to sqr...
Máte nápad?

Offline

  • (téma jako vyřešené označil(a) surovec)

#2 06. 08. 2024 23:26

check_drummer
Příspěvky: 5578
Reputace:   106 
 

Re: Regulární výraz v PHP

↑ 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 )*


"Máte úhel beta." "No to nemám."

Offline

 

#3 07. 08. 2024 09:53

surovec
Příspěvky: 1174
Reputace:   25 
 

Re: Regulární výraz v PHP

↑ 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

 

#4 07. 08. 2024 15:40

check_drummer
Příspěvky: 5578
Reputace:   106 
 

Re: Regulární výraz v PHP

↑ 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.


"Máte úhel beta." "No to nemám."

Offline

 

#5 07. 08. 2024 21:17

surovec
Příspěvky: 1174
Reputace:   25 
 

Re: Regulární výraz v PHP

↑ check_drummer:
Aha, to díky za upozornění, nějak to ošetřím.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson