Reguläre Ausdrücke

Binio

Erfahrenes Mitglied
ich habe nun folgenden Ausdruck:

Code:
$my2 = preg_replace("!(\+|\-)(x)!","$11$2",$my2);

ich möchte damit bei einer Eingabe von 2x²+x+3=0

das 2x²+1x+3=0 raus kommt. Was mein aktuelles Problem ist sieht man wohl hoffentlich.
Bei $my2 = preg_replace("!(\+|\-)(x)!","$11$2",$my2); steht die $11 eigentlich für $1 und dann die Zahl 1 und dann $2.

Wie kann man das Realisieren ? Habs mit
Code:
$my2 = preg_replace("!(\+|\-)(x)!","{$1}1$2",$my2);
und
Code:
$my2 = preg_replace("!(\+|\-)(x)!","${1}1$2",$my2);
versucht doch leider ohne Erfolg
 
hehe das war es wirklich :o)

Ja Unwissenheit schützt nicht vor Fehlern

Hehe gleich kommt Problem zwei auf mich zu:

Code:
$my2 = preg_replace("!(\+|\-)([\d]+(\.[\d]+)?x?²?³?)!","($1$2)",$my2);

was ich erreichen möchte ist klar aus +2x²+3=0 soll (+2x²)+(+3)=(+0) werden.
Jedoch landet das ² oder ³ immer auserhalb der Klammer.
 
Als kleiner Tip:
Verwende die HTML-Tags <sup>2</sup> (hochgestellte 2) und richte dein RegExp danach aus. Wird einfacher sein und dann kannst auch ^4 ^5 ^6 darstellen.
 
ja aber ich muss nur die ² und ³ darstellen. und ich muss die Eingabe so hinnehmen... :mad:
Man kann doch die ² und ³ abfragen oder nicht ?
 
Zuletzt bearbeitet:
Hab den wegen Komma Zahlen bischen abgeändert

Code:
$my2 = preg_replace("!([+-][\d]+(\.[\d]+)?[x²³]{0,})!is",'($1)',$my2);

klappt aber immer noch nicht. aus

Code:
+2.5x²++1x-+3=+0

wird

Code:
(+2.5x)²+(+1x)-(+3)=(+0)
 
Danke für den Link dadurch sehe ich das es wirklich klappen sollte
Aber dennoch klappt es bei mir nicht.
der packt das ² auserhalb der Klammer
 
Hab jetzt mal etwas total Verbotenes gemacht

Code:
                for($x=0;$x<strlen($my2);$x++){
                    // ... wenn eine Klammer auf geht
                    if( $my2[$x]==')' && ($my2[$x+1]=='²' || $my2[$x+1]=='³') ){
                        echo "xxx";
                        if($my2[$x]=='²')
                            $my2[$x]=='²';
                        else
                            $my2[$x]=='³';
                        $my2[$x+1]==')';
                    }
                }

eigentlich sollte xxx einmal ausgegeben werden. Doch es tut sich nichts...
Ich denke der erkennt meine ² nicht... das es von ein <input type='text' name='eingabe' /> kommt
Kann das sein ?
ich lasse mir aber vor der Bearbeitung meine eingabe mit echo $_POST['eingabe'] ausgeben und bekomme
Code:
+2x²++1x-+3=+0
Also ich sehe im moment nicht die Lösung da meine FOR Schleife eigentlich klappen sollte.
 
Zurück