解析MediaWiki模板块

时间:2014-07-18 16:23:21

标签: php regex mediawiki-templates

解析MediaWiki Template-Block有一点问题:http://regex101.com/r/dD1hC9/1

  • 我用来从文本中获取模板的RegEx是:\{\{Template1 (.+?)\}\}
  • 模板:{{Template1 |Parameter1=Text |Parameter2=Text |Parameter3={{Template2|hier|steht|text}} |Parameter4=Text }}

是否有可能在关联数组(parametername => value)中解析整个块,而不会在所有参数中分别丢失Parameter3中的模板?

1 个答案:

答案 0 :(得分:0)

<?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);
?>

打印

Array
(
    [Parameter1] => Text
    [Parameter2] => Text
    [Parameter3] => {{Template2|hier|steht|text}}
    [Parameter4] => Text
)