fork download
  1. <?php
  2.  
  3. function parseInfo($data, $category = "charki") {
  4. $found = array();
  5. $matches = array();
  6.  
  7. switch ($category) {
  8. case "charki":
  9. $pattern_parts = array(
  10. 'item' => '(?P<item>\D{1,8})',
  11. 'category' => '\[(?P<category>\d{1,2})\]',
  12. 'multiplier' => '(?:\(x(?P<multiplier>\d{1,2})\))?',
  13. 'mode' => '(?P<mode>[PVFERUL]+)'
  14. );
  15. $pattern = '@Зачаровать' . join('\s*', $pattern_parts) . '@u';
  16. break;
  17. }
  18.  
  19. preg_match($pattern, $data, $found);
  20.  
  21. foreach ($found as $k => $v) {
  22. if (!is_int($k)) {
  23. $matches[$k] = ($k === 'multiplier' && empty($v)) ? 1 : trim($v);
  24. }
  25. }
  26.  
  27. return $matches;
  28. }
  29.  
  30. $db = array();
  31. $text = 'Зачаровать Обувь [11] F (Масса: 0.1)
  32. Развернуть/свернутьДолговечность: 0/1
  33. Требуется минимальное:
  34. Уровень: 11
  35. Действует на:
  36. Защита от колющего урона: +2
  37. Защита от рубящего урона: +4
  38. Защита от дробящего урона: +2
  39. Зачаровать Поножи [11] F (Масса: 0.1)
  40. Развернуть/свернутьДолговечность: 0/1
  41. Требуется минимальное:
  42. Уровень: 11
  43. Действует на:
  44. Мф. против увертывания (%): +4
  45. Защита от магии: +1
  46. Защита от магии огня: +2
  47. Защита от колющего урона: +2
  48. Защита от дробящего урона: +1
  49. Защита от режущего урона: +1
  50. Защита от магии воды: +1';
  51.  
  52. $lines = explode(PHP_EOL, $text);
  53.  
  54. foreach ($lines as $line) {
  55. $temp = parseInfo($line, $category = "charki");
  56. if (!empty($temp)) {
  57. $db[] = $temp;
  58. }
  59. }
  60.  
  61. print_r($db);
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
Array
(
    [0] => Array
        (
            [item] => Обувь
            [category] => 11
            [multiplier] => 1
            [mode] => F
        )

    [1] => Array
        (
            [item] => Поножи
            [category] => 11
            [multiplier] => 1
            [mode] => F
        )

)