2011-02-28 74 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文件数据你可以使用正则表达式类。这些是正则表达式。