Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
$my2='+2x³++1x-+3=+0';
$my2 = preg_replace('!([+-][\d\.]+[x²³]*)!','($1)',$my2);
<?xml version="1.0" encoding="UTF-8" ?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Termumformung</title>
<link rel="stylesheet" type="text/css" href="generatoren.css">
</head>
<body>
<?php
include_once("class/termneu.php");
include_once("class/zahlneu.php");
$meinterm = new termneu();
?>
<h2>Eingabe</h2>
<form action='?' method='POST'>
<input type='TEXT' name='eingabe' id='eingabe' size='100' value='<?php echo $_POST['eingabe'] ?>' />
<input type='submit' value='Senden' />
</form>
<?php
$meinterm->termneu($_POST['eingabe']);
?>
</body>
</html>
#=== FUNCTION ============================================================
# NAME: termneu
# PURPOSE: Veraendert den eingehenden String so das er fuer die Klasse
# berechenbar ist. Dabei werden um die Zahlen Klammern erzeugt
# und die dafuer stehenden Vorzeichen eingefuegt wenn nicht
# vorhanden.
# PARAMETERS: $value: String der umgeformt werden soll
# RETURNS: Ergebnis der berechnung oder bei Fehlern die Fehlermeldung
# DESCRIPTION: Veraendert den eingehenden String so das er fuer die Klasse
# berechenbar ist.
#===========================================================================
function termneu($value=0){
if(strlen($value)==0)
return "";
else{
//echo "eingang".$value;
$klammerncounter=0;
#-----------------------------------------------------------------------
# Ueberprueft ob die Unbekannte x vorkommt
#-----------------------------------------------------------------------
if(preg_match("![x]+!",$value)){
#-----------------------------------------------------------------------
# Ueberprueft ob die Eingabe keine unerlaubten Buchstaben enthaelt
#-----------------------------------------------------------------------
if(preg_match("![a-wy-zA-WY-Z]+!",$value))
return "nur x als Unbekannte erlaubt";
#-----------------------------------------------------------------------
# Ueberprueft ob Klammern vorkommen
#-----------------------------------------------------------------------
for($x=0;$x<strlen($value);$x++){
// ... wenn eine Klammer auf geht
if($value[$x]=='(')
return "Klammern sind nicht erlaubt";
// ... wenn eine Klammer zu geht
if($value[$x]==')')
return "Klammern sind nicht erlaubt";
}
// macht ein + vor der ersten Zahl wenn es nicht vorhanden ist
$my2 = preg_replace("!^([\d]x?)!","+$1",$value);
if($this->zwischenschritte)
echo "Nach Bearbeitung der ersten Stelle:\t".$my2."<br />";
// macht eine 1 vor x wenn keine Zahl vor x steht
$my2 = preg_replace("!(\+|\-)(x)!",'${1}1$2',$my2);
if($this->zwischenschritte)
echo "Nach Bearbeitung, wenn +x dann +1x:\t".$my2."<br />";
// wenn eine Zahl Klammern um sich stehen hat, werden diese
// entfernt. Aus (+2.12) wird +2.12
$my2 = preg_replace("!\((\+|\-)([\d]+(\.[\d]+)?x?)\)!","$1$2",$my2);
if($this->zwischenschritte)
echo "Nach säubern von doppelten Klammern:\t".$my2."<br />";
#-----------------------------------------------------------------------
# Fuegt Vorzeichen hinzu wie folgt
# Wenn Beispielsweise 41*21 im String steht wird daraus 41*+21
# Wenn Beispielsweise (41*21) im String steht wird daraus (+41*21)
# Wenn Beispielsweise (41*21)/6 im String steht wird daraus (+41*21)/+6
# Wenn Beispielsweise 41(41*21) im String steht wird daraus 41*(41*21)
# Wenn Beispielsweise 61=23+2x im String steht wird daraus 61=+23+2x
#-----------------------------------------------------------------------
for($x=0;$x<strlen($my2);$x++){
// ... wenn es sich um ein Gleichheitszeichen "=" handelt und diese nicht ganz
// vorne im String steht
//41(41*21)/61=<---23+2x
if( $x>0 && $my2[$x]=='=' ){
// ... wenn nach dem = Zeichen eine Zahl oder eine Unbekannte ist
if( $my2[$x+1]=='x' || in_array($my2[$x+1],$this->zahlen) ){
$mytemp=substr($my2,0,$x);
$mytemp.=$my2[$x]."+".substr($my2,$x+1);
$my2=$mytemp;
$mytemp=NULL;
}
}
// ... wenn es sich um ein Operator handelt und diese nicht ganz
// vorne im String steht
//41(41*<---x)/61
if( $x>0 && in_array($my2[$x],$this->operatoren) ){
// ... wenn die Zeichen drum herum Zahlen oder Unbekannte sind
if( (in_array($my2[$x-1],$this->zahlen) || $my2[$x-1]=='x' || $my2[$x-1]=='²' || $my2[$x-1]=='³') && ($my2[$x+1]=='x' || in_array($my2[$x+1],$this->zahlen)) ){
$mytemp=substr($my2,0,$x);
$mytemp.=$my2[$x]."+".substr($my2,$x+1);
$my2=$mytemp;
$mytemp=NULL;
}
}
// ... wenn es sich um eine Zahl handelt und diese nicht ganz
// vorne im String steht
//41(4<---1*21)/61
if( $x>0 && in_array($my2[$x],$this->zahlen) ){
// ... wenn vor dieser Zahl eine offene Klammer steht
if( $my2[$x-1]=='(' ){
$mytemp=substr($my2,0,$x);
$mytemp.="+".substr($my2,$x);
$my2=$mytemp;
$mytemp=NULL;
}
}
// ... wenn es sich um eine Zahl handelt und diese nicht ganz
// vorne im String steht
//41(41*21)/6<---1
if( $x>0 && in_array($my2[$x],$this->zahlen) ){
// ... wenn ein Zeichen vor der Zahl ein Operator steht
// und davor eine geschlossene Klammer
if( in_array($my2[$x-1],$this->operatoren) && $my2[$x-2]==')' ){
$mytemp=substr($my2,0,$x);
$mytemp.="+".substr($my2,$x);
$my2=$mytemp;
$mytemp=NULL;
}
}
// ... wenn es sich um eine offene Klammer handelt und diese
// nicht ganz vorne im String steht
//41(<---41*21)/61
if( $x>0 && $my2[$x]=='(' ){
// ... wenn vor dieser offenen Klammer eine Zahl steht
if( in_array($my2[$x-1],$this->zahlen) || $my2[$x-1]=='x'){
$mytemp=substr($my2,0,$x);
$mytemp.="*".substr($my2,$x);
$my2=$mytemp;
$mytemp=NULL;
}
}
}
//$my2 = preg_replace("!(\+|\-)?(x)!","$11$2",$my2);
if($this->zwischenschritte)
echo "Nach Bearbeitung mit Vorzeichen:\t".$my2."<br />";
// Jede alleinstehende Unbekannte bekommt eine Klammerung
// Aus +x² wird (+1x²)
//$my2 = preg_replace("!((\+|\-)(x(²|³)))!","(${2}1$3)",$my2);
// Jede Zahl mit ein Vorzeichen bekommt eine Klammerung.
// Aus + +41*(+41*+21)/+61 wird (+41)*((+41)*(+21))/(+61)
//echo "reg Ausdruck !(\+|\-)([\d]+(\.[\d]+)?(x(²|³)?)?)!,($1$2$4)";
//$my2='+2x³++1x-+3=+0';
//echo "<br>vorhtmlentities".$my2;
//$my2=html_entity_decode($my2);
//echo "<br>nachhtmlentities".$my2;
//$my2=html_entity_decode($my2);
$my2 = preg_replace('!([+-][\d\.]+[x²³]*)!','($1)',$my2);
if($this->zwischenschritte)
echo "Nach Bearbeitung mit klammern:\t".$my2."<br />";
/*
for($x=0;$x<strlen($my2);$x++){
if( $my2[$x]==')' && ($my2[$x+1]=='²' || $my2[$x+1]=='³') ){
echo "xxx";
if($my2[$x]=='²')
$my2[$x]=='²';
else
$my2[$x]=='³';
$my2[$x+1]==')';
}
}
if($this->zwischenschritte)
echo "Nach Bearbeitung mit klammern:\t".$my2."<br />";
*/
for($x=0;$x<strlen($my2);$x++){
if($my2[$x]=='=')
$gleichheitszeichen++;
}
if($gleichheitszeichen==1){
// gibt den bearbeiteten String weiter an klammernausfloesen
return $this->klammernausfloesen($my2);
}else
return "Dies ist kein gültiger Term";
}
}
}
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
;-)if(copy_paste()==0)
return"Programmieren hilflos";
else
return"Gehaltserhoehung";