Kezdőoldal » Számítástechnika » Programozás » PHP-ban lehet olyat hogy...

PHP-ban lehet olyat hogy szöveget mint matematikai műveletet felismerje?

Figyelt kérdés

Konkrétan a törtet, pl. 45/10 mint szövegként bevitt érték, és kiírja válaszként hogy 4.5?

(int)$value nem jó, intval sem erre való, explode-dal nem akarok foglalkozni, valami ettől rövidebb megoldás kellene, ha van.

Köszi


2016. aug. 28. 10:06
 1/9 anonim ***** válasza:
2016. aug. 28. 10:53
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
Erre valamilyen nyelvi elemzőt szoktak bevetni. Ilyen pl. az ANTLR. Ehhez te készítesz egy nyelvtant, ami alapján ez egy értelmezőfát fog felépíteni és az alapján kiértékelheted a string-ben lévő kifejezést.
2016. aug. 28. 11:49
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:

Tudomásom szerint a PHP Turing-teljes, így értelemszerűen megoldható benne a feladat.


Mivel sanszos, hogy ilyesmi nem neked jutott először eszedbe, ilyenkor lib után szokás túrni, hogy az ember ne találja fel újra a melegvizet.


Ez az első megoldás, amit a gugli kiköpött: [link]


Literálokat is megeszik, így neked valószínűleg csak a setExpression és a getValue metódus érdekes első körben.

2016. aug. 28. 11:52
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:
De miért mutatod neki az evalt, miért? :D
2016. aug. 28. 14:33
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:
54%

$kifejezes = '45/10';

eval('print '.$kifejezes.';');



eval paraméterként kapott stringet lefuttatja, mint kód. Persze ehhez garantálni kell, hogy értelmes kifejezést kap.

2016. aug. 28. 14:35
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:

Kicsit kiegészítve: [link]

Azért eval() mert így lehet futtatható műveletként értelmezni.

eval - nélkül is megoldható, ha szét cibáljuk elemeire, majd értelmezzük, és össze rakjuk újra egy PHP műveletté.

2016. aug. 28. 15:39
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:

#5:


$kifejezes = 'unlink(".htpasswd")';

eval('print '.$kifejezes.';');


Nem lesz ez így jó ;)

2016. aug. 28. 15:39
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:

Köszönöm a válaszokat, de igazából nem komplett matematikai feladathoz szükséges a kód, csak exif-hez gondoltam 1 soros vagy pár szavas kódot ahelyett hogy felbontom a perjelnél és utána a két tömbértéket elosztom.

45/10 lesz egy 4.5-es rekeszérték.

2016. aug. 28. 16:32
 9/9 anonim ***** válasza:

#7 ma 15:39

De jó lesz az úgy :)

Nem említette, hogy banki rendszert akar mögé építeni. A "konkrétan" részt teljesen megoldja más számokkal is.

2016. aug. 28. 19:58
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!