PHP-Array in C# Dictionary parsen

Raven280438

Erfahrenes Mitglied
Hi,

Ich lese aus einer Webseite den Quellcode aus. Der Quellcode bildet ein PHP-Array ab:

Code:
$array["0"]["name"] = "Username";
$array["0"]["pass"] = "Password";
$array["0"]["path"] = "/path";

Wie kann ich jetzt am einfachsten das PHP-Array in ein C# Dictionary parsen?


Gruß
 

Nico Graichen

Erfahrenes Mitglied
Hi

Über die String-Methoden den entsprechenden Werte suchen (Split, IndexOf, Substring seihen hier initial genannt).
Da hier ein Schema drin ist kannst du auch RegularExpressions nutzen.
 

Raven280438

Erfahrenes Mitglied
Hi,

ich habs jetzt mit nem RegEx gemacht.
Hier der Code falls jemand das gleiche Problem hat:

Code:
                WebClient wClient = new WebClient();
                wClient.Encoding = Encoding.UTF8;
                String strSource = wClient.DownloadString(url);

                String[] Lines = strSource.Split('\n');

                List<Dictionary<String, String>> ListReturn = new List<Dictionary<string,string>>();

                System.Text.RegularExpressions.Regex regExpr = new System.Text.RegularExpressions.Regex("^\\$array\\[\"([0-9].*)\"\\]\\[\"([0-9a-zA-Z_\\-].*)\"\\] = \"(.*)\";$");

                foreach (String Line in Lines)
                {
                    if (regExpr.IsMatch(Line))
                    {
                        System.Text.RegularExpressions.Match match = regExpr.Match(Line);

                        System.Text.RegularExpressions.Group g_id = match.Groups[1];
                        System.Text.RegularExpressions.Group g_key = match.Groups[2];
                        System.Text.RegularExpressions.Group g_value = match.Groups[3];
                        System.Text.RegularExpressions.CaptureCollection cc_id = g_id.Captures;
                        System.Text.RegularExpressions.Capture c_id = cc_id[0];
                        System.Text.RegularExpressions.CaptureCollection cc_key = g_key.Captures;
                        System.Text.RegularExpressions.Capture c_key = cc_key[0];
                        System.Text.RegularExpressions.CaptureCollection cc_value = g_value.Captures;
                        System.Text.RegularExpressions.Capture c_value = cc_value[0];

                        int id = Convert.ToInt16(c_id.ToString());
                        String key = c_key.ToString();
                        String value = c_value.ToString();

                        if (ListReturn.Count() > id && ListReturn[id] != null)
                        {
                            ListReturn[id].Add(key, value);
                        }
                        else
                        {
                            Dictionary<String, String> directory = new Dictionary<string,string>();
                            directory.Add(key, value);
                            ListReturn.Add(directory);
                        }
                    }
                }
 

Neue Beiträge