Mark
Cinema4D
Hi Ihr Lieben!
Hm, ich fange mal klein an
Wieder (wie beim Quiz zuvor) eine RegExp, die nach einem Notations-Zeichen (+-*/) gefolgt von zwei Zahlen sucht. Ein Fund wird umgestellt, mit eval() errechnet und dadurch ersetzt. Dies geschieht so lange, bis oben Gesuchtes nicht mehr vor kommt...
Liebe Grüße,
Mark.
Hm, ich fange mal klein an

Wieder (wie beim Quiz zuvor) eine RegExp, die nach einem Notations-Zeichen (+-*/) gefolgt von zwei Zahlen sucht. Ein Fund wird umgestellt, mit eval() errechnet und dadurch ersetzt. Dies geschieht so lange, bis oben Gesuchtes nicht mehr vor kommt...
PHP:
<?php
echo "tutorials.de Coding-Quiz #2 - Polnischer Taschenrechner<br /><br />\n";
// Eingabe per Html-Form
$aufgabe = $_GET['aufgabe'];
echo '<form><input type="text" name="aufgabe" value="' . $aufgabe .'" /></form>' . "\n";
// Leerzeichen Anfang & Ende entfernen
$term = trim($aufgabe);
// Doppelte Leerzeichen entfernen
$term = preg_replace('/ +/', ' ', $term);
// Sucht Operant gefolgt von zwei Zahlen
$regex = '/([+|-|\*|\/]) (-?\d+\.?\d*) (-?\d+\.?\d*)/';
while ( preg_match($regex, $term, $treffer) ) {
// Prüft bei Division, ob Divisor = 0
if ($treffer[1] == '/' && $treffer[3] == 0)
$term = "Fehler: Division durch null."; // -> Abbruch der While-Schleife
// Ersetzt das Gefundene mit dessen Berechnung
$term = preg_replace(
$regex . 'e',
'eval("return ${2} ${1} ${3};")',
$term);
}
// Ausgabe Ergebnis
echo $term;
?>
Liebe Grüße,
Mark.