调用MediaWiki Page Parser来获取HTML?

时间:2009-12-04 01:59:33

标签: php mediawiki

我想获取MediaWiki页面的HTML,即我想通过解析器运行MediaWiki Markup。现在,我知道我可以使用一些外部解析器,但大多数都不支持Transclusion和(自然)扩展,所以我的输出会有所不同。

由于我可以访问MediaWiki安装,我想知道是否可以使用内置的解析器来呈现页面。由于页面上的所有其他内容(导航,侧边栏,javascript和css包含等),我不想做屏幕抓取,我只是想要身体。

如果重要,它将在PHP 5.2上运行MediaWiki 1.12。

3 个答案:

答案 0 :(得分:7)

使用action = render;例如index.php?title = Article_title& action = render

答案 1 :(得分:3)

是的,你可以做到这一点,事实上,我记得在我的许多扩展程序here中都做了这件事。

找到了我的一个扩展程序:SecureTransclusion

摘录如下:

public function mg_strans( &$parser, $page, $errorMessage = null, $timeout = 5 ) {

    if (!self::checkExecuteRight( $parser->mTitle ))
        return 'SecureTransclusion: '.wfMsg('badaccess');

    $title = Title::newFromText( $page );
    if (!is_object( $title ))
        return 'SecureTransclusion: '.wfMsg('badtitle')." ($page)";

    if ( $title->isTrans() )
        $content = $this->getRemotePage( $parser, $title, $errorMessage, $timeout );
    else
        $content = $this->getLocalPage( $title, $errorMessage );

    $po = $parser->parse( $content, $parser->mTitle, new ParserOptions() );
    $html = $po->getText();

    return array( $html, 'noparse' => true, 'isHTML' => true );
}

答案 2 :(得分:2)

如何使用当前的MediaWiki解析器?只需抓住转换后的输出,比如说

<!-- start content --><div class="printfooter">

NewPP limit report。后者开始预处理器的统计。这样就省略了所有侧框和横幅。