0

我在解析 MediaWiki 模板块时遇到了一点问题:http ://regex101.com/r/dD1hC9/1

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

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

4

1 回答 1

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

印刷

大批
(
    [参数1] => 文本
    [参数2] => 文本
    [参数3] => {{Template2|hier|steht|text}}
    [参数4] => 文本
)
于 2015-04-15T08:51:19.037 回答