Mahlzeit,
Hab das Forum nach ner Funktion durchsucht die mir ein print_r aus PHP in ein Flash Array importiert. Hab nix gefunden also hab ich mich mal munter in die Sache reingestürzt. Rausgekommen is dabei was des funktioniert aber noch net flexibel/Umfangreich genug ist. Bis jetzt kann die Funktion die Syntax von print_r nur bis zur 5. Stufe auflösen, und das auch nur wenn man die ausgabe per String übergibt. Hab im moment bischen wenig Zeit weiter zu machen. Aber wer will darf sich gerne versuchen ;-)
Ziemlich unsauberer Qual-code aber auf die schnelle.... egal, vll hilfts jemandem ^^
PHP-Code:
function parsePrint_R(inputString) {
inputString = stringReplace(inputString, "\r", "");
inputString = stringReplace(inputString, "\n", "");
inputString = stringReplace(inputString, " ", "");
_root.arrayInfo = new Array();
_root.arrayInfo["Ebene"] = 0;
_root.arrayInfo["Pfad"] = new Array();
_root.arrayInfo["Pfad"][0] = "Daten";
this[_root.arrayInfo["Pfad"][0]] = new Array();
splitVar1 = inputString.split('Array');
for (i=1; i<splitVar1.length; i++) {
splitVar2 = splitVar1[i].split('[');
for (j=1; j<splitVar2[j].length; j++) {
splitVar3 = splitVar2[j].split('] => ');
if (splitVar3[1] == "") {
//trace("Array_"+splitVar3[0]);
_root.arrayInfo["Ebene"]++;
_root.arrayInfo["Pfad"][_root.arrayInfo["Ebene"]] = splitVar3[0];
parsePrint_R_mkEintrag("array");
} else {
splitVar4 = splitVar3[1].split(")");
if (splitVar4.length>1) {
//trace(splitVar4[0]);
parsePrint_R_mkEintrag("eintrag", splitVar3[0], splitVar4[0]);
delete _root.arrayInfo["Pfad"][_root.arrayInfo["Ebene"]];
_root.arrayInfo["Ebene"]--;
} else {
//trace(splitVar3[1]);
parsePrint_R_mkEintrag("eintrag", splitVar3[0], splitVar3[1]);
}
}
}
}
delete i;
delete j;
delete inputString;
delete arrayInfo;
delete splitVar1;
delete splitVar2;
delete splitVar3;
delete splitVar4;
return (Daten);
}
function parsePrint_R_mkEintrag(art, var1, var2) {
if (_root.arrayInfo["Ebene"] == 0) {
if (art == "array") {
trace("Brauchts net");
} else if (art == "eintrag") {
this[_root.arrayInfo["Pfad"][0]][var1] = var2;
//trace("Eintrag auf Ebene 0, Wert: "+var2);
}
} else if (_root.arrayInfo["Ebene"] == 1) {
if (art == "array") {
//trace("Lege Array 1 an");
this[_root.arrayInfo["Pfad"][0]][_root.arrayInfo["Pfad"][1]] = new Array();
} else if (art == "eintrag") {
//trace("Eintrag auf Ebene 1, Wert: "+var2);
this[_root.arrayInfo["Pfad"][0]][_root.arrayInfo["Pfad"][1]][var1] = var2;
}
} else if (_root.arrayInfo["Ebene"] == 2) {
if (art == "array") {
//trace("Lege Array 1 an");
this[_root.arrayInfo["Pfad"][0]][_root.arrayInfo["Pfad"][1]][_root.arrayInfo["Pfad"][2]] = new Array();
} else if (art == "eintrag") {
//trace("Eintrag auf Ebene 1, Wert: "+var2);
this[_root.arrayInfo["Pfad"][0]][_root.arrayInfo["Pfad"][1]][_root.arrayInfo["Pfad"][2]][var1] = var2;
}
} else if (_root.arrayInfo["Ebene"] == 3) {
if (art == "array") {
//trace("Lege Array 1 an");
this[_root.arrayInfo["Pfad"][0]][_root.arrayInfo["Pfad"][1]][_root.arrayInfo["Pfad"][2]][_root.arrayInfo["Pfad"][3]] = new Array();
} else if (art == "eintrag") {
//trace("Eintrag auf Ebene 1, Wert: "+var2);
this[_root.arrayInfo["Pfad"][0]][_root.arrayInfo["Pfad"][1]][_root.arrayInfo["Pfad"][2]][_root.arrayInfo["Pfad"][3]][var1] = var2;
}
} else if (_root.arrayInfo["Ebene"] == 4) {
if (art == "array") {
//trace("Lege Array 1 an");
this[_root.arrayInfo["Pfad"][0]][_root.arrayInfo["Pfad"][1]][_root.arrayInfo["Pfad"][2]][_root.arrayInfo["Pfad"][3]][_root.arrayInfo["Pfad"][4]] = new Array();
} else if (art == "eintrag") {
//trace("Eintrag auf Ebene 1, Wert: "+var2);
this[_root.arrayInfo["Pfad"][0]][_root.arrayInfo["Pfad"][1]][_root.arrayInfo["Pfad"][2]][_root.arrayInfo["Pfad"][3]][_root.arrayInfo["Pfad"][4]][var1] = var2;
}
}
}
function stringReplace(string, suche, ersetzeMit) {
return (string.split(suche).join(ersetzeMit));
}