2011-02-28 47 views
0

我正在嘗試編寫一個簡單的Windows窗體應用程序,以使基於PHP的語言文件的翻譯更容易。將PHP數組轉換爲C#數組/數據集

的形式應用是很簡單:

  1. 負載PHP文件
  2. 創建從PHP陣列C#陣列(見下面的PHP詳情)
  3. 對於陣列顯示兩個盒子的每個項目:原始+翻譯
  4. 用戶輸入他的翻譯在框2
  5. 用戶點擊接着,重複步驟3 + 4
  6. 用戶點擊保存,第t將轉換後的數組保存到新文件。

的PHP文件(language.php)是最簡單的性質:

<?php 
$language['errormsg'] = 'This is my error message'; 
$language['forward'] = 'Forward'; 
$language['testing'] = 'Beta'; 
?> 

如何 「轉化」(分析)這個簡單的PHP文件到C#陣列,數據集或任何我可以循環? 加載文件作爲一個字符串通過System.IO.File.ReadAllText是容易的,我只是不知道如何在一個巧妙的方法解析它

回答

1

下面是一個正則表達式,用於選擇單引號中包含的值,這些值都是您實際需要的值。

'[^'\r\n]*' 

例如:

string text = @"$language['errormsg'] = 'This is my error message';"; 
    string pat = @"'[^'\r\n]*'"; 

    Regex r = new Regex(pat, RegexOptions.IgnoreCase); 
    Match m = r.Match(text); 
    while (m.Success) 
    { 
    Console.WriteLine(m.Value); 
    m = m.NextMatch(); 
    } 

輸出:

'errormsg' 
'This is my error message' 

另外請注意,您可以通過符合

foreach (string line in File.ReadLines(@"[your php file path]")) 
{ 
    // process line 
} 
+0

這樣的伎倆讀取原始文件行 - 我可以從這裏工作。謝謝! – 2011-02-28 17:09:05

0

而不是寫自己的PHP解析器,我建議使用內置的PHP函數輸出數據轉換爲C#可讀的格式,例如XML或JSON。

然後,您的簡單Windows窗體應用程序可以本機讀取數據。

1

我建議使用正則表達式。一旦你加載了文件,運行一個正則表達式來搜索數組語法,並獲取必要的位,然後將這些位放入Dictionary<string, string>

要通過字典環路,做

foreach (var message in myDictionary) 
{ 
    // message.Key or message.Value to access the bits 
} 
0

如果你想從php文件數據你可以使用正則表達式類。這些是正則表達式。