如何解析信息框内{{}}(花括号)内的属性值

时间:2012-04-14 01:00:49

标签: mediawiki wikipedia wikipedia-api

在维基百科的Infobox中,一些属性值也在花括号内{{}} ..有时候他们也有lins ..我需要大括号内的值,这些值显示在维基百科网页上。 我也读过这些模板..任何人都可以给我一些链接或指导我如何处理它?<​​/ p>

2 个答案:

答案 0 :(得分:2)

双花括号{{}}定义对某种魔术词,变量,解析器函数或模板的调用。可以在MediaWiki.org/.../Manual:Magic_words上找到帮助。看起来像|的小行被称为pipes并且用作分隔符,允许wikicore解析引擎定义可以与魔术词,变量,解析器函数或模板一起使用的参数。

答案 1 :(得分:1)

希望这会帮助遇到同样问题的每个人。 考虑到您将使用PHP解析信息框,您可以使用: http://www.mywiki.com/wiki/api.php?format=xml&action=query&titles=PAGE_TITLE_THAT_CONTAINS_AN_INFOBOX&prop=revisions&rvprop=content&rvgeneratexml=1

'rvgeneratexml'被设置为true(1),这将使xml节点<rev>生成包含XML格式的信息框信息的属性“parsetree”。

然后,在PHP中,您可以使用simpleXML加载整个信息(<api>所有内容,包括<rev></api>):

$xml = simplexml_load_file($url);

然后你可以通过获取“parsetree”属性并加载字符串来加载模板的信息:

$template = simplexml_load_string($xml->query->pages->page->revisions->rev->attributes()->parsetree);
$template = $template->template; // If more than 1 template, check template[0], [1], etc

然后,通过使用正确的结构,您可以使用以下内容访问元素:

if ($template->part[0]->name='name')
    $film = $template->part[0]->value;

然后,$film将包含电影的名称(->name是参数的名称,->value是其值。)