2014-07-18 92 views
0

我有一个小问题,解析链接到MediaWiki模板的块:http://regex101.com/r/dD1hC9/1解析链接到MediaWiki模板的块

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

是否有任何可能性,解析完整的块中的关联数组(parametername => value),而不在所有参数分别松动在参数3的模板?

+0

你应该正则表达式添加到该问题。 – Scott

+0

你可以在链接中看到正则表达式。 –

+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 
) 
+0

如果你只有一个模板在字符串中,但如果你有多个模板,那么这个效果很好。 – barrycarter