Перевести PHP массив в C # массив / DataSet - PullRequest
0 голосов
/ 28 февраля 2011

Я пытаюсь написать простое приложение для Windows Forms, чтобы упростить перевод языковых файлов на основе PHP.

Применение форм довольно просто:

  1. Загрузить PHP-файл
  2. Создание массива C # из массива php (подробнее о PHP см. Ниже)
  3. Для каждого элемента в массиве отображаются два поля: Оригинал + Перевод
  4. Пользователь вводит свои переводы в графе 2
  5. Пользователь нажимает кнопку Далее, повторите шаг 3 + 4
  6. Пользователь нажимает кнопку Сохранить, переведенный массив сохраняется в новый файл.

Файл PHP ( language.php ) имеет простейшую природу:

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

Как мне "преобразовать" (разобрать) этот простой файл PHP в массив C # , DataSet или что-нибудь, что я могу зациклить? Загрузка файла в виде строки с помощью System.IO.File.ReadAllText проста, я просто не знаю, как правильно его проанализировать

Ответы [ 4 ]

1 голос
/ 28 февраля 2011

Вот регулярное выражение для выбора значений, заключенных в одинарные кавычки, и все, что вам действительно нужно.

'[^'\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();
  }

output:

'errormsg'
'This is my error message'

Также обратите внимание, что вы можете читать исходный файл построчно с помощью

foreach (string line in File.ReadLines(@"[your php file path]"))
{
   // process line
}
1 голос
/ 28 февраля 2011

Я бы предложил использовать регулярные выражения.Как только вы загрузили файл, запустите регулярное выражение, которое ищет синтаксис массива и выбирает необходимые биты, а затем поместите эти биты в Dictionary<string, string>.

Чтобы пройти по словарю, выполните

foreach (var message in myDictionary)
{
    // message.Key or message.Value to access the bits
}
0 голосов
/ 28 февраля 2011

Если вы хотите получить данные из php-файла, вы можете использовать класс Regex.Это регулярные выражения.

0 голосов
/ 28 февраля 2011

Вместо того, чтобы писать свой собственный синтаксический анализатор PHP, я бы рекомендовал использовать встроенную функцию PHP для вывода данных в формат, читаемый C #, такой как XML или JSON.

Тогда ваше простое приложение Windows Forms можетчитать данные изначально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...