将PHP数组转换为C#数组/数据集
我正在尝试编写一个简单的Windows窗体应用程序,以简化基于PHP的语言文件的翻译 表单应用程序非常简单:将PHP数组转换为C#数组/数据集,c#,php,arrays,parsing,C#,Php,Arrays,Parsing,我正在尝试编写一个简单的Windows窗体应用程序,以简化基于PHP的语言文件的翻译 表单应用程序非常简单: 加载PHP文件 从php数组创建C#数组(有关php的详细信息,请参见下文) 对于数组中的每个项目,显示两个框:原始+翻译 用户在框2中输入他的翻译 用户单击下一步,重复步骤3+4 用户单击“保存”,转换后的数组将保存到新文件中 PHP文件(language.PHP)的性质最简单: <?php $language['errormsg'] = 'This is my error me
<?php
$language['errormsg'] = 'This is my error message';
$language['forward'] = 'Forward';
$language['testing'] = 'Beta';
?>
如何将这个简单的PHP文件“转换”(解析)为C#数组、数据集或任何我可以循环的东西?
通过
System.IO.file.ReadAllText将文件作为字符串加载很容易,我只是不知道如何以智能方式解析它,而不是编写自己的PHP解析器,我建议使用内置PHP函数将数据输出为C#可读的格式,如XML或JSON
然后,您的简单Windows窗体应用程序可以本机读取数据。我建议使用正则表达式。加载文件后,运行一个正则表达式,搜索数组语法并提取必要的位,然后将这些位放入字典中
要循环浏览字典,请执行以下操作
foreach (var message in myDictionary)
{
// message.Key or message.Value to access the bits
}
如果您想从php文件中获取数据,可以使用Regex类。这些是正则表达式。这里有一个正则表达式,用于选择单引号中包含的值,这是您实际需要的全部
'[^'\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
}