Ich hab mir jetzt das Tutorial zu den regulären Ausdrücken angeschaut und ein Programm geschrieben, um zu überprüfen, ob ich es verstanden habe.
Es ist ein Programm mit dem man Wertetabellen von Funktionen ausrechnen lassen kann, durch reguläre Ausdrücke habe ich ihm nun die Potenzrechnung beigebracht (zumindest eine Potenz pro Gleichung).
Hier ist der Code, ausprobieren könnt ihr es auf soeren-fotos.de/test/wertetabelle.php
PHP
<span class="syntaxhtml"><br /><!doctype html><br /><html><br /><br /><head><br /> <title>Wertetabellen einer Funktion</title><br /><br /> <meta charset="ISO-8859-1" /><br /> <meta name="description" content="" /><br /> <meta name="author" content="" /><br /> <meta name="keywords" content="" /><br /></head><br /><br /><body><br /> <h1>Wertetabelle einer Funktion</h1><br /> <span class="syntaxdefault"><?php<br /> </span><span class="syntaxkeyword">if ((</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'check'</span><span class="syntaxkeyword">]) == </span><span class="syntaxdefault">1</span><span class="syntaxkeyword">) {<br /> </span><span class="syntaxdefault">$gleichung </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'funktion'</span><span class="syntaxkeyword">];<br /> </span><span class="syntaxdefault">$von </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'von'</span><span class="syntaxkeyword">];<br /> </span><span class="syntaxdefault">$bis </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'bis'</span><span class="syntaxkeyword">];<br /> if (empty(</span><span class="syntaxdefault">$von</span><span class="syntaxkeyword">)) {<br /> </span><span class="syntaxdefault">$von </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">1</span><span class="syntaxkeyword">;<br /> }<br /> if (empty(</span><span class="syntaxdefault">$bis</span><span class="syntaxkeyword">)) {<br /> </span><span class="syntaxdefault">$bis </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">1</span><span class="syntaxkeyword">;<br /> }<br /> </span><span class="syntaxcomment">//Absicherung gegen irgendwelche php-Befehle<br /> </span><span class="syntaxdefault">$von </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"/[^0-9\-]/i"</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"1"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$von</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$bis </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"/[^0-9\-]/i"</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"1"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$bis</span><span class="syntaxkeyword">);<br /> echo </span><span class="syntaxstring">"<p>Funktion: "</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$gleichung </span><span class="syntaxkeyword">.</span><span class="syntaxstring">"</p>"</span><span class="syntaxkeyword">;<br /> if (</span><span class="syntaxdefault">strpos</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$gleichung</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"="</span><span class="syntaxkeyword">)) {<br /> </span><span class="syntaxdefault">$funktion </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">explode </span><span class="syntaxkeyword">(</span><span class="syntaxstring">"="</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$gleichung</span><span class="syntaxkeyword">);<br /> }<br /> else {<br /> </span><span class="syntaxdefault">$funktion</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">] = </span><span class="syntaxstring">"kein \"=\" gefunden"</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$funktion</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$gleichung</span><span class="syntaxkeyword">;<br /> }<br /> echo </span><span class="syntaxstring">"<p>Vor dem \"=\": " </span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$funktion</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">] . </span><span class="syntaxstring">"<br />Nach dem \"=\": "</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$funktion</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]. </span><span class="syntaxstring">"</p>"</span><span class="syntaxkeyword">;<br /> echo </span><span class="syntaxstring">"<table border=\"1\"><br /> <thead><br /> <tr><br /> <th>X-Wert</th><br /> <th>Rechnung</th><br /> <th>Y-Wert</th><br /> </tr><br /> </thead><br /> <tbody><br /> "</span><span class="syntaxkeyword">;<br /> while (</span><span class="syntaxdefault">$von </span><span class="syntaxkeyword"><= </span><span class="syntaxdefault">$bis</span><span class="syntaxkeyword">) {<br /> </span><span class="syntaxdefault">$x </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$von</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$von</span><span class="syntaxkeyword">++;<br /> </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"/[a-z]/i"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$x</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$funktion</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]);<br /> </span><span class="syntaxcomment">// < Potenz<br /> </span><span class="syntaxkeyword">if (</span><span class="syntaxdefault">strpos</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">], </span><span class="syntaxstring">"^"</span><span class="syntaxkeyword">)) {<br /> </span><span class="syntaxdefault">$potenz </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"^"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]);<br /> if (</span><span class="syntaxdefault">preg_match</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#[0-9+\-*/]+\([0-9+\-*/]+\)$#"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$potenz</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">])) {<br /> </span><span class="syntaxdefault">$vorne </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"("</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$potenz</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]);<br /> </span><span class="syntaxdefault">$basis</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">] = </span><span class="syntaxstring">"("</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">array_pop</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$vorne</span><span class="syntaxkeyword">);<br /> eval(</span><span class="syntaxstring">'$basis[1] = '</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$basis</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">] .</span><span class="syntaxstring">';'</span><span class="syntaxkeyword">);<br /> }<br /> elseif (</span><span class="syntaxdefault">preg_match</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#[0-9+\-*/]+\d+$#"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$potenz</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">])) {<br /> </span><span class="syntaxdefault">$vorne </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">preg_split</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#[+\-*/]#"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$potenz</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]);<br /> </span><span class="syntaxdefault">$basis</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">array_pop</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$vorne</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$basis</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$basis</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];<br /> }<br /> else {<br /> </span><span class="syntaxdefault">$basis</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$potenz</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];<br /> eval(</span><span class="syntaxstring">'$basis[1] = '</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$basis</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">] .</span><span class="syntaxstring">';'</span><span class="syntaxkeyword">);<br /> }<br /> if (</span><span class="syntaxdefault">preg_match</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#^\d+[0-9+\-*/]+#"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$potenz</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">])) {<br /> </span><span class="syntaxdefault">$hinten </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">preg_split</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#[+\-*/]#"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$potenz</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]);<br /> </span><span class="syntaxdefault">$exponent </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$hinten</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];<br /> }<br /> else {<br /> </span><span class="syntaxdefault">$exponent </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$potenz</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">];<br /> }<br /> </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">];<br /> </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'potenz'</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">bcpow</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$basis</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">], </span><span class="syntaxdefault">$exponent</span><span class="syntaxkeyword">);<br /> if (</span><span class="syntaxdefault">preg_match</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#\(#"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$potenz</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">])) {<br /> </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#\([0-9+\-*/]+\)\^\d+#"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'potenz'</span><span class="syntaxkeyword">], </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]);<br /> }<br /> else {<br /> if (</span><span class="syntaxdefault">preg_match</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#\-#"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$x</span><span class="syntaxkeyword">)) {<br /> </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#-\d+\^\d+#"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'potenz'</span><span class="syntaxkeyword">], </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]);<br /> }<br /> else {<br /> </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#\d+\^\d+#"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'potenz'</span><span class="syntaxkeyword">], </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]);<br /> }<br /> }<br /> eval(</span><span class="syntaxstring">'$ergebnis = '</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">] . </span><span class="syntaxstring">';'</span><span class="syntaxkeyword">);<br /> }<br /> </span><span class="syntaxcomment">// > Potenz<br /> </span><span class="syntaxkeyword">else {<br /> </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">];<br /> eval(</span><span class="syntaxstring">'$ergebnis = '</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">] . </span><span class="syntaxstring">';'</span><span class="syntaxkeyword">);<br /> }<br /> echo </span><span class="syntaxstring">"<tr><br /> <td align=\"center\">"</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$x </span><span class="syntaxkeyword">.</span><span class="syntaxstring">"</td><br /> <td align=\"center\">"</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$rechnung</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">] .</span><span class="syntaxstring">"</td><br /> <td align=\"center\">"</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$ergebnis </span><span class="syntaxkeyword">.</span><span class="syntaxstring">"</td><br /> </tr><br /> "</span><span class="syntaxkeyword">;<br /> }<br /> echo </span><span class="syntaxstring">"</tbody></table>"</span><span class="syntaxkeyword">;<br /> }<br /> </span><span class="syntaxdefault">?><br /></span> <form action="#" method="post"><br /> <p>Funktion: (bitte Hinweise unten beachten!)<br /><br /> <input type="text" name="funktion"/><br /> </p><br /> <p>x-Werte der Wertetabelle:<br /><br /> von: <input type="text" name="von" value="<span class="syntaxdefault"><?php </span><span class="syntaxkeyword">echo </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'von'</span><span class="syntaxkeyword">]; </span><span class="syntaxdefault">?></span>"/><br /><br /> bis: <input type="text" name="bis" value="<span class="syntaxdefault"><?php </span><span class="syntaxkeyword">echo </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'bis'</span><span class="syntaxkeyword">]; </span><span class="syntaxdefault">?></span>"/><br /> </p><br /> <p><br /> <input type="submit" name="absenden" value="Absenden!"/><br /> <input type="hidden" name="check" value="1"/><br /> </p><br /> </form><br /> <h2>Hinweise</h2><br /> <table border="0"><br /> <thead><br /> <tr><th colspan="2" align="left">Rechenzeichen</th></tr><br /> </thead><br /> <tbody><br /> <tr><br /> <td colspan="2">Punkt statt Komma benutzen</td><br /> </tr><br /> <tr><br /> <td>Plus</td><br /> <td>+</td><br /> </tr><br /> <tr><br /> <td>Minus</td><br /> <td>-</td><br /> </tr><br /> <tr><br /> <td>Mal</td><br /> <td>*</td><br /> </tr><br /> <tr><br /> <td>Geteilt</td><br /> <td>/</td><br /> </tr><br /> <tr><br /> <td>hoch</td><br /> <td>^</td><br /> </tr><br /> </tbody><br /> </table><br /> <table border="0"><br /> <thead><br /> <tr><th colspan="2" align="left">Bitte alle Rechenzeichen mitschreiben!!</th></tr><br /> <tr><th colspan="2" align="left">Beispiele:</th></tr><br /> </thead><br /> <tbody><br /> <tr><br /> <td>Statt: 2(1+1)</td><br /> <td>Bitte: 2*(1+1)</td><br /> </tr><br /> <tr><br /> <td>Statt: 2x</td><br /> <td>Bitte: 2*x</td><br /> </tr><br /> <tr><br /> <td>Statt: 2 1/4</td><br /> <td>Bitte: 2+1/4</td><br /> </tr><br /> </tbody><br /> <tfoot><br /> <tr><td colspan="2" align="left">Sonst gibt es Fehlermeldungen!!</td></tr><br /> </tfoot><br /> </table><br /> <table border="0"><br /> <thead><br /> <tr><br /> <th colspan="2" align="left"><br /> Mehr als eine Potenz in der Gleichung wird nicht aktzeptiert,<br /> also bei mehr also einer Potenzen ausschreiben!!<br /> </th><br /> </tr><br /> <tr><th colspan="2" align="left">Beispiele:</th></tr><br /> </thead><br /> <tbody><br /> <tr><br /> <td>Statt: x^2</td><br /> <td>Bitte: x*x</td><br /> </tr><br /> <tr><br /> <td>Statt: x^3</td><br /> <td>Bitte: x*x*x</td><br /> </tr><br /> <tr><br /> <td>Statt: (x+1)^2</td><br /> <td>Bitte: (x+1)*(x+1)</td><br /> </tr><br /> </tbody><br /> <tfoot><br /> <tr><td colspan="2" align="left">Sonst kommen falsche y-Werte heraus</td></tr><br /> </tfoot><br /> </table><br /></body><br /></html><br /></span>
Wenn ihr Verbesserungsvorschläge oder Tipps habt, sagt es mir. Meckert aber nicht, dass ich das bischen Desgin nicht über CSS gemacht habe, bei so wenig war ich zu faul.