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 01.02.2012, 18:29  
Neuer Benutzer
 
Registriert seit: 01.02.2012
Beiträge: 2
PHP-Kenntnisse:
Anfänger
Pumi befindet sich auf einem aufstrebenden Ast
Standard Zahlen vor und nach einem bestimmten Zeichen erhalten, begrenzt von Leerzeichen

Huhu,

ich beschäftige mich seit ca. zwei Wochen mit PHP, und würde nun gerne so eine Art Taschenrechner programmieren. Das erste Ziel, das ich mir gesteckt habe ist, simple arithmetische Berechnungen durchzuführen, inklusive Potenzen.
Im Klartext: Der Benutzer gibt z.B. in ein Textfeld ein:

9*5-6*3/4+67+4-2/3

und erhält das Ergebnis. Alles soweit kein Problem, ich setze das ganze mit eval() um. Nun möchte ich allerdings die Möglichkeit bieten, Potenzen einzugeben, mittels des ^-Zeichens. 6^3 entspricht also pow(6, 3).

Meine Frage ist nun, wie ich am besten die Zahl vor (die Basis) dem Zeichen und die Zahl nach (der Exponent) dem Zeichen erhalte. Sollte nicht so schwer zu lösen sein, mittels strpos() +/- 1. Das liefert mir aber nur die einzige Ziffer vor/nach dem ^-Zeichen.

Wie kann ich alle Zeichen vor/nach dem ^-Zeichen auslesen, die von einem anderen Rechenzeichen (+, -, *, /, (, )) oder einem Leerzeichen begrenzt werden? Aus 36^34 soll also pow(36, 34) und nicht pow(6, 3) werden.

Gruß,

Pumi
Pumi ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 01.02.2012, 18:32  
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

Diese Frage hatten wir gerade erst. Inklusive Kritik an eval usw. Bitte benutze die Forensuche.
__________________
--
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 01.02.2012, 18:34  
Benutzer
 
Registriert seit: 07.05.2011
Beiträge: 46
PHP-Kenntnisse:
Anfänger
Dragon befindet sich auf einem aufstrebenden Ast
Standard

Hallo und willkommen im Forum,

was eine möglichkeit wäre ist : Die Zahlen vor dem ^ und nach dem Zeichen in temporäre Variablen zu schreiben und diese dann mit pow auszuwerten oder man macht es mit Substr()
Dragon ist offline   Mit Zitat antworten
Alt 01.02.2012, 18:35  
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

In einer Gleichung kann aber auch 2^3^4 stehen oder 3^(8-2). Mathematische Formeln können nunmal beliebig komplex sein. Da reicht Suchen und Ersetzen schlicht nicht aus.
__________________
--
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 01.02.2012, 18:35  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Indem du guckst, wo das nächste Leer- oder Rechenzeichen ist. Oder indem du dich mit regulären Ausdrücken auseinandersetzt.
Das größte Problem an deinem Taschenrechner ist aber, dass dank eval() auch jede andere Eingabe möglich ist. D.h. es lässt sich jeder beliebige PHP-code eingeschleusen. Solange das Ganze nur eine Fingerübung für dich ist, ist das kein Problem, aber das Skript darfst du auf keinem Fall auf einem öffentlichen Server hosten.
Am besten beschäftigst du dich aber gleich von Anfang an mit sicherer Programmierung. Das klingt vielleicht etwas unfair, weil du ja gerade erst begonnen hast, aber je früher du damit anfängst, desto besser.
Ressourcen gibt es dazu eigentlich genug im Netz.

Beitrag editiert:
[…] Viiel zu langsam.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 01.02.2012, 18:44  
Neuer Benutzer
 
Registriert seit: 01.02.2012
Beiträge: 2
PHP-Kenntnisse:
Anfänger
Pumi befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Manko10 Beitrag anzeigen
Indem du guckst, wo das nächste Leer- oder Rechenzeichen ist. Oder indem du dich mit regulären Ausdrücken auseinandersetzt.
Das größte Problem an deinem Taschenrechner ist aber, dass dank eval() auch jede andere Eingabe möglich ist. D.h. es lässt sich jeder beliebige PHP-code eingeschleusen. Solange das Ganze nur eine Fingerübung für dich ist, ist das kein Problem, aber das Skript darfst du auf keinem Fall auf einem öffentlichen Server hosten.
Am besten beschäftigst du dich aber gleich von Anfang an mit sicherer Programmierung. Das klingt vielleicht etwas unfair, weil du ja gerade erst begonnen hast, aber je früher du damit anfängst, desto besser.
Ressourcen gibt es dazu eigentlich genug im Netz.

Beitrag editiert:
[…] Viiel zu langsam.
Ich weiss, worauf du hinauswillst und verstehe dich insofern auch. Aber es handelt sich, wie du bereits sagtest, nur um eine kleine Fingerübung
Ich könnte jetzt natürlich auch hingehen und alles rausschleusen, was keine Zahlen oder eine begrenzte Zahl an Rechenzeichen enthält, aber das wäre vorerst zuviel des guten

Zum ersten Teil: Ich weiss, und genau da ist mein Problem, ich weiss nicht so recht wie ich das bewerkstelligen kann

Zitat:
Zitat von nikosch Beitrag anzeigen
In einer Gleichung kann aber auch 2^3^4 stehen oder 3^(8-2). Mathematische Formeln können nunmal beliebig komplex sein. Da reicht Suchen und Ersetzen schlicht nicht aus.
Da hast du natürlich Recht. Ich denke, bei der Sache hier können wir uns aber auf simple Sachen beschränken, also dass aus 6^4-5 nicht 6^-1 sondern (6^4)-5 wird.
Pumi ist offline   Mit Zitat antworten
Alt 01.02.2012, 18:46  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Wenn du schon eval() nimmst, was spricht dann dagegen, einfach gleich pow() einzugeben? Dann klappt's auch mit der Verschachtelung und du verbaust dir nicht die Möglichkeit, den XOR-Bit-Operator ^ zu nutzen.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   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
JavaScript: Zählen von Zeichen SvenLittkowski JavaScript, Ajax und mehr 9 08.04.2010 23:55
[Erledigt] Zeichen im String zählen, aber nur die Buchstaben apfelsaft PHP Tipps 2009 20 31.07.2009 16:20
Datensätze mit bestimmten Wert in Datenbank zählen und ausgeben ?!?! kreativepassion PHP Tipps 2009 10 24.06.2009 21:17
Zeichen zählen Textarea Kein Genie JavaScript, Ajax und mehr 2 07.06.2009 19:23
mit array_count_values($array) einen bestimmten Wert zählen flual2000 PHP Tipps 2009 2 22.04.2009 14:12
[Erledigt] wenn erstes zeichen leerzeichen, dann entfernern Moe LaRoqua PHP Tipps 2009 3 18.04.2009 11:33
Zeichen zählen rezix PHP Tipps 2008 2 14.12.2007 09:45
String nach bestimmten Zeichen durchsuchen PHP Tipps 2006 11 03.02.2006 11:51
Zeichen in einer Textbox zählen - mit php möglich ? Cytrix PHP Tipps 2007 2 26.12.2005 23:15
Zeichen zählen Smily0412 PHP Tipps 2007 6 02.11.2005 07:31
Kombination: Zeichen zählen / - ersetzen King2k PHP Tipps 2005-2 2 24.10.2005 20:44
Tage zählen, ab einem bestimmten Datum PHP Tipps 2005-2 5 26.08.2005 00:27
Buchstaben, Wörter oder Zeichen zählen Datenbanken 1 27.08.2004 08:09
Textarea Zeichen zählen PHP Tipps 2004 2 12.08.2004 17:15
Funktion zum zählen von Zeichen in einem String PHP Tipps 2004 2 15.07.2004 16:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php zeichen nach einem leerzeichen auslesen, php alles bevor zeichen, zahlen vor und nach dem -, php ersetzen ab bestimmten zeichen, php zeichen vor und nach, mit zahlen zeichen bekommen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:47 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