ich habe ein serialisiertes PHP Objekt (Nein, Thema gehört nicht zu Web-Technologien),
dies möchte ich entweder deserialisieren oder per RegEx spezielle Werte auslesen.
serial = serialisiertes PHP Objekt
s = List<string> wo die Werte hinein sollen
var rx = new Regex("\"Value\"", RegexOptions.Compiled | RegexOptions.IgnoreCase);
Match match = rx.Match(serial);
while (match.Success)
{
s.Add(serial.Substring(match.Index + 14, 4).Replace("\"", ""));
match = match.NextMatch();
}
Das ist aber leider etwas schwammig....
Nun wollte ich es über:
var output = string.Join(";", Regex.Matches(serial, "\\\"(.*?)\\\"")
.Cast<Match>()
.Select(m => m.Groups[1].Value));
versuchen.
Ideal wäre es evtl wenn ich den Wert nach: s:5:"Value"; auslese, dies bekomme ich mit RegEx nicht hin.
Kann ich überhaupt eine solche Zeichenkette mit RegEx verwenden?
Ist dieser gedankengang Zielführend? oder soll ich mich besser an eine deserialisierung machen?
Gibt es für eine solche deserialisierung DesignPatterns?
Danke
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein
Warum splittest du den String nicht in ein Array, als Trennzeichen '"Value"' nehmen, dann im darunter gesplitteten Array[':'] drittes Element auslesen.
Das RegEx geparse kannst du dir tatsächlich sparen.
Mir ist nur nicht klar in welchem Format hier das Objekt Serialisiert ist, sieht nicht nacht einem bekannten Format aus (Xml, Json etc.)
Ansonsten würde ich dir empfehlen, wie Witte auch schon geschrieben hat, das ganze per einfachen String Operationen umzusetzen.
Dafür RegEx nehmen wäre vermutlich nicht einfachert und müsste auch über zwei Ebenen laufen.
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
Warum splittest du den String nicht in ein Array, als Trennzeichen '"Value"' nehmen, dann im darunter gesplitteten Array[':'] drittes Element auslesen.
Ich probiere das mal, nach ";" trennen und den string im array nach "Value" auslesen...
s:5:"Value";s:2:"15"
s = String, Länge 5 - Wert "Value"
darauf folgt:
s = String, Länge 2 - Wert "15"
muss ich im ganzen serialisierten string machen
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von echdeneth am .
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein
PHP serialisiert in ein proprietäres Format. Das zu verwenden ist halt prinzipiell schon quatsch.
Leider ist das aber gar nicht so selten (vermutlich weil PHP Entwickler leider immer noch nichts von Standards verstehen).
PHP serialisiert in ein proprietäres Format. Das zu verwenden ist halt prinzipiell schon quatsch.
Leider ist das aber gar nicht so selten (vermutlich weil PHP Entwickler leider immer noch nichts von Standards verstehen).
Darauf habe ich kein Einfluss, ist aus WooCommerce exportiert und muss ich genau so nehmen
Mag nicht so aussehen , aber ich habe sehr lange gesucht und die meisten Suchergebnisse waren für mich nicht brauchbar...
oft wird auf das NuGet Paket verwiesen oder im falschen Kontext
Zitat von Abt
Hättest Du das einfach mal gegoogelt oder die Forensuche benutzt, dann wärst auch in unser anderes Thema dazu gekommen :-) PHP serialize() in C# Array
Habe ich auch gemacht, DAS! habe ich aber nicht gefunden!
Den deserialisierer teste ich mal, ich hatte ja eigentlich gehofft das mit RegEx zu machen zumal ich aus dem ganzen String
der 2281 Zeichen lang ist nur 3 Werte benötige aber den regulären AUsdruck (noch) nicht hinbekomme
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein