Php 如何使用MediaWiki解析器从wikitext获取HTML

Php 如何使用MediaWiki解析器从wikitext获取HTML,php,parsing,mediawiki,wikipedia,Php,Parsing,Mediawiki,Wikipedia,我试图使用维基百科的MediaWiki解析器将维基百科标记文本解析为HTML。 我在这里看了手册- 但是,由于我对PHP完全陌生,所以无法编写测试脚本 以下是我想要解析并转换为HTML的示例输入: 莎士比亚十四行诗 ==个字符== 当作为人物进行分析时,十四行诗的主题通常被提及 作为一个美丽的年轻人,竞争对手的诗人,和黑暗的女人。演讲者表示 年轻人仰慕美丽的市容,后来又与黑暗发生了婚外情 女士不知道这些诗和他们的人物是虚构的还是虚构的 自传体的;那些认为十四行诗是自传的学者,尤其是 [[A.L.

我试图使用维基百科的MediaWiki解析器将维基百科标记文本解析为HTML。 我在这里看了手册- 但是,由于我对PHP完全陌生,所以无法编写测试脚本

以下是我想要解析并转换为HTML的示例输入:

莎士比亚十四行诗 ==个字符== 当作为人物进行分析时,十四行诗的主题通常被提及 作为一个美丽的年轻人,竞争对手的诗人,和黑暗的女人。演讲者表示 年轻人仰慕美丽的市容,后来又与黑暗发生了婚外情 女士不知道这些诗和他们的人物是虚构的还是虚构的 自传体的;那些认为十四行诗是自传的学者,尤其是 [[A.L.Rowse]],他们试图识别具有历史记录的角色 个人。
您甚至不必使用PHP。您可以使用Wikipedia的API(或您自己安装的MediaWiki上的API)。有关更多信息,请参阅。

您可以使用JWPL,它将与wiki的本地副本一起使用。
加载转储文件,转换wie Datamaschine,导入数据库,使用它做您想做的事情。

以下是解析wikitext的最低代码(在MediaWiki 1.32上测试):

再见

//
公共静态函数onParserFirstCallInit(Parser$Parser){
$parser->setHook('myname','MyClass::getoutputtml');
}
公共静态函数getOutputHtml(){
$localParser=newparser();
$input=OtherClass::myOutput();
$context=newrequestcontext();
$title=$context->getTitle();
$parserOptions=新的parserOptions;
$output=$localParser->parse($input,$title,$parserOptions);
返回$output->getText();
}

我使用此项目解析此项目为我提供了HTML输出,但保留了我希望删除的超链接和一些标记,因此我必须为其编写一个清理程序,但mediawiki解析器的文档说明它定义了一些函数以获得我需要的内容,所以我希望使用它。此外,维基百科的官方解析器会检查它,谢谢!欢迎来到SO,只有链接的答案在SO中不是最佳实践,因为当链接被删除/关闭或删除时,答案会变得过时。我一直在寻找特定于代码的代码片段,以将wikiText转换为html。我找到的所有答案都使用mediawiki API。谢谢你的代码片段。它很有魅力。PeaceHi@AzharSyed,我正在尝试将wikitext转换为html。你能详细说明一下在哪里运行Sophivorus提供的这些命令吗?我是Windows 10,所以我以前没有使用过这种语法。@LEAnhDung这是一个php代码段。如果您安装了mediawiki,您可以编写一个小扩展并在那里添加此代码。您可以将请求正文中的“wikitext”发送到您的扩展,并将html发送回客户端。@非常感谢您的提示。我去看看。我在解析(一个简单的)维基文本时遇到了问题。我不确定这是否是其他机器上MediaWiki的常见问题。你能检查一下你是否也遇到了这个问题吗?嗨@Roco,我正在尝试将wikitext转换成html。你能详细说明一下在哪里运行这些命令吗?我是Windows10,所以我以前没有使用过这种语法。
$text = "Your [[wikitext]]";
$title = $skin->getTitle(); // Get the title object from somewhere or use $wgTitle
$parser = new Parser;
$parserOptions = new ParserOptions;
$parserOutput = $parser->parse( $text, $title, $parserOptions );
$html = $parserOutput->getText();
echo $html;
   //<myname></myname>    

    public static function onParserFirstCallInit( Parser $parser ){
        $parser->setHook('myname', 'MyClass::getOutputHtml');
    }
    public static function getOutputHtml(){
        $localParser = new Parser();
        $input = OtherClass::myOutput();
        $context = new RequestContext();
        $title = $context->getTitle();
        $parserOptions = new ParserOptions;
        $output = $localParser->parse($input, $title, $parserOptions);
        return $output->getText();
    }