将PHP数组转换为C#数组/数据集
问题描述:
我正在尝试编写一个简单的Windows窗体应用程序,以使基于PHP的语言文件的翻译更容易。将PHP数组转换为C#数组/数据集
的形式应用是很简单:
- 负载PHP文件
- 创建从PHP阵列C#阵列(见下面的PHP详情)
- 对于阵列显示两个盒子的每个项目:原始+翻译
- 用户输入他的翻译在框2
- 用户点击接着,重复步骤3 + 4
- 用户点击保存,第t将转换后的数组保存到新文件。
的PHP文件(language.php)是最简单的性质:
<?php
$language['errormsg'] = 'This is my error message';
$language['forward'] = 'Forward';
$language['testing'] = 'Beta';
?>
如何 “转化”(分析)这个简单的PHP文件到C#阵列,数据集或任何我可以循环? 加载文件作为一个字符串通过System.IO.File.ReadAllText
是容易的,我只是不知道如何在一个巧妙的方法解析它
答
下面是一个正则表达式,用于选择单引号中包含的值,这些值都是您实际需要的值。
'[^'\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
}
答
而不是写自己的PHP解析器,我建议使用内置的PHP函数输出数据转换为C#可读的格式,例如XML或JSON。
然后,您的简单Windows窗体应用程序可以本机读取数据。
答
我建议使用正则表达式。一旦你加载了文件,运行一个正则表达式来搜索数组语法,并获取必要的位,然后将这些位放入Dictionary<string, string>
。
要通过字典环路,做
foreach (var message in myDictionary)
{
// message.Key or message.Value to access the bits
}
答
如果你想从php文件数据你可以使用正则表达式类。这些是正则表达式。
这样的伎俩读取原始文件行 - 我可以从这里工作。谢谢! – 2011-02-28 17:09:05