Шаблонный блок 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] => Текст)