php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.01.2012, 21:47  
Neuer Benutzer
 
Registriert seit: 30.10.2011
Beiträge: 17
PHP-Kenntnisse:
Anfänger
tobi.u befindet sich auf einem aufstrebenden Ast
Standard pow statt hoch einsetzen

Hallo miteinander,

ich habe zwei PHP-Skripte (einen Gleichungslöser und einen Funktionsplotter) geschrieben, die die vom Benutzer eingegebenen Terme auflösen/zeichnen. Nun möchte ich das Rechnen mit Potenzen ermöglichen (also z.B. die Eingabe x^5) und im Skript aus x^5 pow(x,5) machen. Ich hab auch schon einiges in diese Richtung recherchiert und allerdings noch nichts wirklich brauchbares/leicht zu verstehendes gefunden.

Hat jemand eine Idee, wie das ganze auch funktioniert wenn der String länger ist als x^5. Mein Ansatz wäre gewesen mit explode auftrennen, allerdings funktioniert das bei längeren Strings nicht, da pow() dann den gesamten Ausdruck umschließen würde. BSP: 5+x^5*3 würde dann zu pow(5+x,5*3) werden anstatt zu 5+pow(x,5)*3.

PHP-Code:
$exp explode('^',$term);
$term "pow(".$exp[0].",".$exp[1].")"
so nebenbei die Demo:
http://simon-kysela.at/index.php?id=21
http://simon-kysela.at/index.php?id=25

mfg

Geändert von tobi.u (28.01.2012 um 22:25 Uhr).
tobi.u ist gerade online   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.01.2012, 21:56  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Für so etwas braucht es einen Formelparser.

z.B.: http://www.bestcode.com/html/math_parser_for_php.html
(ungetestet, kurz gegoogelt)
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 23.01.2012, 22:09  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

x ausrechnen oder Gleichungen auflösen wird Dir das sowieso nicht.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 23.01.2012, 22:24  
Neuer Benutzer
 
Registriert seit: 30.10.2011
Beiträge: 17
PHP-Kenntnisse:
Anfänger
tobi.u befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Für so etwas braucht es einen Formelparser.

z.B.: http://www.bestcode.com/html/math_parser_for_php.html
(ungetestet, kurz gegoogelt)
Mir wäre eine selbstgeschriebene Variante lieber, ich mache dies auch eigentlich fast ausschließlich für mich. Ein Denkanstoß wäre mir also lieber als ein fertiges Skript (und der von dir gefundene Parser kann überhaupt nur für Geld erworben werden).

mfg
tobi.u ist gerade online   Mit Zitat antworten
Alt 23.01.2012, 22:28  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von tobi.u Beitrag anzeigen
Mir wäre eine selbstgeschriebene Variante lieber,
Da hat doch keiner was dagegen, wenn Du Dir das tippern möchtest, was Du gerne hättest. Beachte aber, daß das ^ Dach escaped werden muß, weil es zur Syntax gehört.

EDIT:
Blödsinn.
[php]explode('/\^/',$term); [/quote]
Is ja gar kein preg_match(). Bei explode() kannste die janzen schrägen Striche weglassen.

Geändert von meikel (23.01.2012 um 23:37 Uhr).
  Mit Zitat antworten
Alt 23.01.2012, 22:55  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ziemlicher Quatsch Dein Gleichungslöser.

a) es gibt Gleichungen die sind unlösbar
b) funktioniert der nur für natürliche Zahlen?
c) es gibt Zahlen, die sind unendlich oder lassen sich digital nicht darstellen.

Btw von eval solltest Du die Finger lassen.

Zitat:
Parse error: syntax error, unexpected ',' in /home/kunden/eherzog/simon-kysela.at/typo3conf/ext/page_php_content/pi1/class.tx_pagephpcontent_pi1.php(55) : eval()'d code(92) : eval()'d code on line 1 Parse error: syntax error, unexpected ',' in /home/kunden/eherzog/simon-kysela.at/typo3conf/ext/page_php_content
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 23.01.2012, 23:14  
Erfahrener Benutzer
 
Registriert seit: 08.10.2009
Beiträge: 681
PHP-Kenntnisse:
Anfänger
Harry_X befindet sich auf einem aufstrebenden Ast
Standard

liegt das bei 1&1? da sind diese "eval()'d"-Meldungen üblich, wenn ich auch nicht weiß warum... vllt bring ich da auch was durcheinander

Geändert von Harry_X (23.01.2012 um 23:24 Uhr).
Harry_X ist offline   Mit Zitat antworten
Alt 23.01.2012, 23:20  
Neuer Benutzer
 
Registriert seit: 30.10.2011
Beiträge: 17
PHP-Kenntnisse:
Anfänger
tobi.u befindet sich auf einem aufstrebenden Ast
Standard

Klar ist das kein Profiskript, das solltest du aber auch nicht von mir erwarten.

Das mit dem Quatsch solltest du aber nochmal überdenken, denn sehr viele professionellen Geräte arbeiten nach einem ähnlichen System. Ich nehme jetzt mal den TI-Voyage Taschenrechner (250€ Hochleistungsrechner mit CAS und allem drum und dran), da mir dieser vertraut ist, welcher unter anderem auch teilweise nach diesem System arbeitet. Vergleicht man die Ergebnisse meines Solvers mit den Ergebnissen des Voyages (im n-Solve-Verfahren) so kommt man immer auf das selbe, identische Ergebnis. (Natürlich ist die normaleingestellte Funktion des Voayage ein CAS und kein n-Solve-Verfahren). Das Skript hat nunmal hier und da Probleme mit endlosen Zahlen, x^x und ähnlichem und auch wenige, aber wie gesagte, da lässt sich kaum was dran ändern (-> Voyage) und damit kann ich auch leben . Und ein CAS zu schreiben wäre mir zu aufwändig.

Dass man von eval die Finger lassen soll, liest man ja doch öfters, ich habe aber selbst keine bessere Lösung gefunden und denke wenn man ordentlich die Benutzereingaben filtert ist es in Ordnung (zudem ist das ganze ja sowieso eine private Seite auf der es nicht sonderlich viel anzurichten gibt und ja ich kenne die Sprüche man solle sich nicht darauf verlassen, dass die eigene Seite zu unbekannt sei, als dass sie kein Interesse für Hacker weckt).

EDIT: Btw der Solver kann sehr wohl mit rationalen und auch irrationalen Zahlen rechnen, ich habe ihn selbst hinreichend mit mathematischen Aufgaben bombadiert.
Als Vergleich zum CAS löst der Solver z.B. die Gleichung x^x-x^4=x^(0.5) in weniger als einer Sekunde und der Voyage im CAS-Modus braucht für diese Gleichung über einer Minute. Dass das Skript bei dir nicht funktioniert, kann natürlich auch daran liegen, dass du eine falsche Eingabe machst, beispielsweise funktioniert die Schreibweise 5x nicht sondern muss krrekt mit 5*x geschrieben werden. (Die obige Gleichung muss derzeit so angeschrieben werden: pow(x,x)-pow(x,4)=pow(x,0.5), da wie gesagt das ^ nicht funktioniert.)

Geändert von tobi.u (24.01.2012 um 00:16 Uhr).
tobi.u ist gerade online   Mit Zitat antworten
Alt 23.01.2012, 23:25  
Erfahrener Benutzer
 
Registriert seit: 08.10.2009
Beiträge: 681
PHP-Kenntnisse:
Anfänger
Harry_X befindet sich auf einem aufstrebenden Ast
Standard

naja. Es könnte zB möglich sein, daß da vom Hacker eigene Scripte installiert werden, die Unmengen an Traffic erzeugen - den dürftest du dann zahlen...
Harry_X ist offline   Mit Zitat antworten
Alt 23.01.2012, 23:31  
Neuer Benutzer
 
Registriert seit: 30.10.2011
Beiträge: 17
PHP-Kenntnisse:
Anfänger
tobi.u befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Harry_X Beitrag anzeigen
naja. Es könnte zB möglich sein, daß da vom Hacker eigene Scripte installiert werden, die Unmengen an Traffic erzeugen - den dürftest du dann zahlen...
Nun wie gesagte, wenn man die Eingaben ordentlich filtert sehe ich kein Problem darin. Und so nebenbei gibts auch ein Limit an Traffic den man erzeugen kann von Seiten des Providers.

Und das mag ja alles schön und gut sein, allerdings wäre mir ein Tipp in Richtung meines Problems hilfreicher. Ich habe in meinem ersten Post bereits einen Ansatz gepostet, auf dem man vielleicht aufbauen kann.
tobi.u ist gerade online   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Funktionsgraphen zeichnen, Term einlesen tobi.u PHP Einsteiger 1 30.10.2011 21:13
[Erledigt] Variable in Funktion "header" einsetzen ePole PHP Tipps 2010 5 14.04.2010 14:52
preg_replace() Reference in Pattern einsetzen? hondatuner PHP Tipps 2010 3 01.04.2010 01:21
String parsen und Variablen/Array einsetzen? (\$ --> $) dawn2k PHP Tipps 2010 2 04.03.2010 21:59
Prepared Statements immer einsetzen? Sangreal PHP-Fortgeschrittene 10 19.10.2009 09:28
Exceltabelle nun im Web einsetzen phlyer Datenbanken 1 15.03.2009 19:04
[Erledigt] bildquelle ermitteln und als variabel speichern und einsetzen ld_forester PHP Tipps 2008 8 27.08.2008 12:11
[Erledigt] Smilies mittels str_replace einsetzen? jackoff PHP Tipps 2008 31 13.05.2008 21:48
Zufallsgenerator sinvoll einsetzen jesus666 PHP Tipps 2006 8 24.06.2006 13:47
Wann persistente MySQL Connections einsetzen? HStev PHP-Fortgeschrittene 2 02.02.2006 13:14
Array: Daten nur eimalig einsetzen SvenLittkowski PHP Tipps 2007 5 20.11.2005 23:44
[PHP«Image] Bild in ein anderes Bild einsetzen PHP Tipps 2005-2 4 07.08.2005 19:39
TPL System - Funktionen - Einsetzen - Rechte Problem PHP Tipps 2005 4 26.03.2005 15:17
Problem beim Einsetzen von array_unique PHP Tipps 2004-2 1 06.12.2004 09:07
Intro einsetzen ? PHP Tipps 2004 2 05.08.2004 17:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
simon-kysela.at, simon kysela, php preg_match schräge striche, php script das gleichungen auflöst, www.simon-kysela-at

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:36 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum