13. august 2007 - 00:39
Der er
29 kommentarer og 1 løsning
PHP: Beregne textstreng
Hej eksperter. Det er måske simpelt, men jeg er efterhånden helt blank her. Hvis jeg har en variabel: $regnestykke = "((4*100)/9)"; Hvordan får jeg så lige php til at behandle regnestykket ? Det virker jo fint hvis $regnestykke = ((4*100)/9);
Annonceindlæg fra Thales
13. august 2007 - 01:06
#1
Prøv med eval: $regnestykke = eval("((4*100)/9)");
13. august 2007 - 01:08
#2
13. august 2007 - 01:27
#3
Tak for svaret the surfer, men jeg har kigget eval igennem - og jeg kan ikke bruge eval("((4*100)/9)"); Jeg bliver nødt til at bruge eval($regnestykke) hvis jeg skal gøre noget, og så virker det stadig ikke. Problemet er at jeg vil prøve at lave en regnemaskine til phpbb og så bruge phpbb kode til det.. [calculate]((4*100)/9)[/calculate] - derefter trækker jeg så regnestykket ud. På den måde kan jeg kun have det i en variabel :/
13. august 2007 - 01:34
#4
Her er min kode pt. <?PHP $input = "[calculate]((4*100)/9)[/calculate]"; //$search = "[calculate]"; //$input = stristr($input, $search); $ding = strpos($input, "[calculate]", 0)+11; $do = strpos($input, "[/calculate]", 0)-11; $final = eval(substr($input, $ding, $do)); echo $final; echo round($final,2)."%"; ?>
13. august 2007 - 01:35
#5
Den giver mig unexpected $end
13. august 2007 - 01:36
#6
Prøv det her: <?PHP $input = "[calculate]((4*100)/9)[/calculate]"; //$search = "[calculate]"; //$input = stristr($input, $search); $ding = strpos($input, "[calculate]", 0)+11; $do = strpos($input, "[/calculate]", 0)-11; $final = substr($input, $ding, $do) //$final = eval(substr($input, $ding, $do)); echo $final; //echo round($final,2)."%"; ?> Hvad skriver den så at $final er?
13. august 2007 - 01:37
#7
Skriv hele fejlmedelelsen, når du får fejl.. det andet kan man ikke bruge til noget..
13. august 2007 - 01:38
#8
Parse error: parse error, unexpected $end in c:\apache\htdocs\calc\index.php(7) : eval()'d code on line 1
13. august 2007 - 01:40
#9
Har du prøvet 13/08-2007 01:36:59 ?
13. august 2007 - 01:40
#10
Med din kode er fejlen: Parse error: parse error, unexpected T_ECHO in c:\apache\htdocs\calc\index.php on line 11
13. august 2007 - 01:41
#11
Jeg mangler et ";" efter min $final linie.. Prøv: <?PHP $input = "[calculate]((4*100)/9)[/calculate]"; //$search = "[calculate]"; //$input = stristr($input, $search); $ding = strpos($input, "[calculate]", 0)+11; $do = strpos($input, "[/calculate]", 0)-11; $final = substr($input, $ding, $do); //$final = eval(substr($input, $ding, $do)); echo $final; //echo round($final,2)."%"; ?>
13. august 2007 - 01:43
#12
kæft mand.. jeg var lige helt blank.. den kode havde virket før, men jeg overså så også selv lige ; - nå anyways output = ((4*100)/9)
13. august 2007 - 01:43
#13
altså dvs. $final = ((4*100)/9)
13. august 2007 - 01:44
#14
Prøv med: $final = substr($input, $ding, $do); $final = eval($final); echo $final; //echo round($final,2)."%";
13. august 2007 - 01:45
#15
Parse error: parse error, unexpected $end in c:\apache\htdocs\calc\index.php(9) : eval()'d code on line 1
13. august 2007 - 01:51
#16
Ahh... Det skal være: eval("$final = " . substr($input, $ding, $do) ); Jeg havde misforstået eval i PHP.. :-)
13. august 2007 - 01:52
#17
Eller noget i den stil.. Anyways.. hvis du normalt ville gøre sådan her: $a = 5; skal du gøre sådan her: eval("$a = 5"); Så skulle det virke..
13. august 2007 - 01:53
#18
Jeg er ikke særlig god til at skifte mellem variabler og strenge i PHP.. :-) Så det er nok ikke "$final = " . substr($input, $ding, $do), men noget i den stil..
13. august 2007 - 01:54
#19
Det her virker: eval("\$final = " . substr($input, $ding, $do) . ";" );
13. august 2007 - 01:55
#20
Så, den sidste kode er: <?PHP $input = "[calculate]((4*100)/9)[/calculate]"; //$search = "[calculate]"; //$input = stristr($input, $search); $ding = strpos($input, "[calculate]", 0)+11; $do = strpos($input, "[/calculate]", 0)-11; eval("\$final = " . substr($input, $ding, $do) . ";" ); echo $final; echo round($final,2)."%"; ?>
13. august 2007 - 01:56
#21
Det vil nok være en god ide, at slå "echo $final;" fra.. :-) <?PHP $input = "[calculate]((4*100)/9)[/calculate]"; //$search = "[calculate]"; //$input = stristr($input, $search); $ding = strpos($input, "[calculate]", 0)+11; $do = strpos($input, "[/calculate]", 0)-11; eval("\$final = " . substr($input, $ding, $do) . ";" ); //echo $final; echo round($final,2)."%"; ?>
13. august 2007 - 01:59
#22
hmm den linie du gav mig giver: Parse error: parse error, unexpected '=' in c:\apache\htdocs\calc\index.php(9) : eval()'d code on line 1
13. august 2007 - 01:59
#23
Hos mig udskriver den: 44.44% ..hvis jeg kommenterer "echo $final;" ud.. :-)
13. august 2007 - 01:59
#24
Jeg har testet følgende, og det virker fint: <?PHP $input = "[calculate]((4*100)/9)[/calculate]"; //$search = "[calculate]"; //$input = stristr($input, $search); $ding = strpos($input, "[calculate]", 0)+11; $do = strpos($input, "[/calculate]", 0)-11; eval("\$final = " . substr($input, $ding, $do) . ";" ); //echo $final; echo round($final,2)."%"; ?>
13. august 2007 - 02:00
#25
det sidste kode spiller! Det er famer i orden det der :D - du skal have mange tusinde gange tak for hjælpen :D
13. august 2007 - 02:01
#26
der røg sgu lige 20 point oveni for din indsats :D Nu har jeg så endelig en reference til eval funktionen :D (Som om den på php.net ikke skulle være god nok) :P
13. august 2007 - 02:03
#27
Hehehe.. Jeg plejer normalt at bruge VARIABEL = eval("noget her"); i JavaScript.. men det må man så åbenbart ikke i PHP.. :-) Det var så lidt.. Takker for points, og god nat.. :-)
13. august 2007 - 10:48
#28
jeg tror ikke du må bruge eval på den måde, når inputtet kommer fra brugere på dit site. Det er den direkte vej til hacking af dit site
13. august 2007 - 12:34
#29
morhan> Hmm.. God pointe.. fjappe> Se om du ikke kan finde en anden måde, at håndtere inputtet ("((4*100)/9)")..
13. august 2007 - 12:44
#30
Den har jeg luret :D - jeg vil selvfølgelig lave validering på det. Men tak for at gøre mig opmærksom på det :D Min ide vil være at tjekke efter matematik tegn i strengen og se om strengen indeholder tal. Bedre ideer er velkommen :D PS: Det er til eget forbrug, så det gør ingen skade. Jeg laver det mest for at lære og så bare at prøve at lave en custom bbcode til phpbb.
Vi tilbyder markedets bedste kurser inden for webudvikling