2014-07-18 134 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