/* inhalt /* /* deutsch /* englisch /* /* /* /* /* Hieraus wird eine struktur menue[key] = 'inhalt' /* menue[txt][deu] = 'deutsch' /* menue[txt][eng] = 'englisch' /* aufgebaut. /* jetzt mann man noch im XmlExclude ein Array mit dem Eintrag /* 'txt' mitgeben und schon schaut die Struktur so aus: /* menue[key] = 'inhalt' /* menue[deu] = 'deutsch' /* menue[eng] = 'englisch' /* die Ebene 'txt' wird komplett weggeblendet /* die erste nicht weggeblendete Ebene wird der Arraynamen, und jede weitere nicht weggeblendete ebene wird ein /* assoziativen Arrays generiert. /* Folgende Werte werdenrichtig erkannt: /* true, false, null und parseInt(..) um eine numerische Variable zu erzeugen. /* /* Wird kein Wert eingegeben () wird das Feld mit '' gefüllt. Will man null drinnen haben, so ist das extra anzugeben. /* ***************************************/ function XmlParse($XmlString,$XmlExclude){ $XmlStruk = null; // Basisname des Arrays $Xmlebene = 0; // Momentane Aufrufebene $Xmltab = array(); // Arrayname der Ebene $varname = null; if (strpos($XmlString,']') === false){ echo 'Xml-Phase Error1. No ] found'; exit; } $XmlString = substr($XmlString,strpos($XmlString,']')); if (strpos($XmlString,'<') === false){ echo 'Xml-Phase Error1. No < found'; exit; } $XmlString = substr($XmlString,strpos($XmlString,'<')); $retWert = lesenaechsteVar($XmlString); /* Hauptscheife */ while(!$retWert['fertig']){ /* Variable wegschneiden */ $XmlString = substr($XmlString,$retWert['von']); if ($retWert['ebene'] == '+'){ if (!inXmlExclude($retWert['var'],$XmlExclude)){ $Xmlebene = $Xmlebene + 1; if ($Xmlebene == 1){ $XmlStruk = '$'.$retWert['var']; eval('if (!isset('.$XmlStruk.')){global '.$XmlStruk.';'.$XmlStruk.'= "";}'); }else{ if ($Xmltab[$Xmlebene] == null && $XmlStruk != $retWert['var']){ $Xmltab[$Xmlebene] = '["'.$retWert['var'].'"]'; } $Xmlvar = $XmlStruk; for ($j=0;$j<=$Xmlebene;$j++){ if ($Xmltab[$j] != null){ $Xmlvar .= $Xmltab[$j]; } } eval('if (!isset('.$Xmlvar.')){'.$Xmlvar.'= "";}'); } }else{ $Xmltab[$Xmlebene] = null; } } if ($retWert['ebene'] == ''){ if (!inXmlExclude($retWert['var'],$XmlExclude)){ $Xmlvar = $XmlStruk; for ($j=0;$j<=$Xmlebene;$j++){ if ($Xmltab[$j] != null){ $Xmlvar .= $Xmltab[$j]; } } $Xmlvar .= '["'.$retWert['var'].'"]'; eval('if (!isset('.$Xmlvar.')){'.$Xmlvar.'= array();}'); switch($retWert['wert']){ case 'null': $XmlvarWert = $Xmlvar . ',null);'; break; case 'true': $XmlvarWert = $Xmlvar . ',true);'; break; case 'false': $XmlvarWert = $Xmlvar . ',false);'; break; default: if (substr($retWert['wert'],0,9) == 'parseInt('){ $XmlvarWert = $Xmlvar . ",str_replace(array(')','parseInt('),'',".'$retWert["wert"]));'; }else{ $XmlvarWert = $Xmlvar . ',"'.$retWert["wert"].'");'; } } eval ('array_push('.$XmlvarWert); } } if ($retWert['ebene'] == '-'){ if (!inXmlExclude($retWert['var'],$XmlExclude)){ $Xmltab[$Xmlebene] = null; $Xmlebene = $Xmlebene - 1; } } $retWert = lesenaechsteVar($XmlString); } } /* Exclude überprüfen */ function inXmlExclude($u_var,$u_exclude){ for($i=0;$i')+3; $XmlString = substr($XmlString,strpos($XmlString,'-->')+3); $xplus += strpos($XmlString,'<'); $XmlString = substr($XmlString,strpos($XmlString,'<')); } $retWert = array(); $von = strpos($XmlString,'<'); $bis = strpos($XmlString,'>')-1; $retWert['fertig'] = false; if ($von === false){ // Ende Erreicht $retWert['fertig'] = true; }else{ if ($bis == -1){ // Ende Erreicht echo 'Xml-Phase Error 2. No > found'; $retWert['fertig'] = true; }else{ $testString = substr($XmlString,1); // Ebene runter if (substr($XmlString,1,1) == '/'){ $retWert['ebene'] = '-'; $retWert['von'] = returnWert($testString) + $xplus; }else{ $retWert['var'] = substr($XmlString,$von+1,$bis); // Ebene finden und Variablenwert holen $nextpos = strpos($testString,'<'); if (substr($testString,$nextpos+1,1) == '/'){ $retWert['ebene'] = ''; $wertString = substr($XmlString,$bis+2); $retWert['wert'] = substr($wertString,0,strpos($wertString,'