Ben php o kadar yetenekli değilim ama daha sonra kolayca c # ile bunu ayrıştırmak (bir csv gibi dosyası gibi) bir ızgara daha benzer şey verilen dize düzenlemek gerektiğini düşünüyorum.
Eğer vermek dize temelde php gibi, bir php çözümleyici (direclty php veya c #) ile bunu ayrıştırmak ve size ızgara inşa edebilirsiniz lexems analiz olabilir.
Bazı ipuçları için buraya bakın -> http://stackoverflow.com/questions/1430778/fast-parsing-of-php-in-c
EDIT 1:
anyway, if the struct is always the same (i.e. Array ( [0] => Array( "no array inside" ) [1] => Array( "no array inside" ) ...) you could parse it in c# with Regex
EDIT 2:
I mean something like this (it's very rough but tested):
Regex arrayRegex = new Regex(@"Array[ \t]*\((.+)\)");
Regex rowRegex = new Regex(@"\[([^\]]+)\] => Array \( ([^)]+)[ \t]*\)");
Regex entryRegex = new Regex(@"\[([^\]]+)\] => ([^\]\[]+)");
var rows = new List<SortedDictionary<string,string>>();
var matches = arrayRegex.Matches(textToParse);
foreach (Match match in matches)
{
if (match.Groups.Count != 2)
throw new Exception("Invalid array");
var rowsMactches = rowRegex.Matches(match.Groups[1].Value);
foreach (Match rowMatch in rowsMactches)
{
var rowDict = new SortedDictionary<string, string>();
if (rowMatch.Groups.Count != 3)
throw new Exception("Invalid row");
var entryMatches = entryRegex.Matches(rowMatch.Groups[2].Value);
foreach (Match entryMatch in entryMatches)
{
if (entryMatch.Groups.Count != 3)
throw new Exception("Invalid entry");
string key = entryMatch.Groups[1].Value;
string val = entryMatch.Groups[2].Value;
rowDict.Add(key, val);
}
rows.Add(rowDict);
}
}
// use the first row to build the columns (N.B. we suppose all dictionaries have the same keys)
var firstRow = rows.First();
DataTable dt = new DataTable();
foreach (string colName in firstRow.Keys)
{
dt.Columns.Add(colName);
}
foreach (var row in rows)
{
dt.Rows.Add(row.Values.Cast<object>().ToArray());
}