Шаблонный блок Parse MediaWiki

У меня небольшая проблема с анализом шаблона-блока MediaWiki: http://regex101.com/r/dD1hC9/1

  • RegEx, который я использую, чтобы получить шаблон из текста: \{\{Template1 (.+?)\}\},
  • Шаблон: {{Template1 |Parameter1=Text |Parameter2=Text |Parameter3={{Template2|hier|steht|text}} |Parameter4=Text }}

Есть ли возможность проанализировать весь блок в ассоциативном массиве (parametername => value) без потери шаблона в Parameter3 соответственно по всем параметрам?

1 ответ

<?php
$subject = "{{Template1 |Parameter1=Text |Parameter2=Text |Parameter3={{Template2|hier|steht|text}} |Parameter4=Text }}";
preg_match('/{{Template1(.*)}}/', $subject, $matches);
preg_match_all('/ \|(\w+)=({{.*?}}|\w*)/', $matches[1], $matches);
$a = array_combine($matches[1], $matches[2]);
print_r($a);
?>

печать

Массив (
    [Параметр1] => Текст [Параметр2] => Текст [Параметр3] => {{Шаблон2|hier|steht| текст}}
    [Параметр4] => Текст)
Другие вопросы по тегам