Hyperlink 在哪里可以找到将内部MediaWiki链接转换为文章URL的代码?

Hyperlink 在哪里可以找到将内部MediaWiki链接转换为文章URL的代码?,hyperlink,mediawiki,wikipedia,article,Hyperlink,Mediawiki,Wikipedia,Article,我需要准确地复制维基百科的行为,将页面正文中的[[链接]]转换为打开它们引用的文章的URL 描述了链接语法及其行为转换。虽然那篇文章只提到了应用的一些非常基本的修改,但我认为这并不是全部 我尝试搜索MediaWiki API引用,但没有找到我要查找的特定代码段。是否有人对代码足够熟悉,知道我所说的可能与编辑/提交相关的PHP函数?这有两个部分: 解析链接语法。 从页面标题生成URL。 解析链接由Parser类完成,Parser类完成所有wikitext处理。链接可能比[[Foo]]更复杂,例如[

我需要准确地复制维基百科的行为,将页面正文中的[[链接]]转换为打开它们引用的文章的URL

描述了链接语法及其行为转换。虽然那篇文章只提到了应用的一些非常基本的修改,但我认为这并不是全部


我尝试搜索MediaWiki API引用,但没有找到我要查找的特定代码段。是否有人对代码足够熟悉,知道我所说的可能与编辑/提交相关的PHP函数?

这有两个部分:

解析链接语法。 从页面标题生成URL。 解析链接由Parser类完成,Parser类完成所有wikitext处理。链接可能比[[Foo]]更复杂,例如[[Foobar | something]],其中Foo是目标页面,bar是一个部分,something是结果链接的表面文本。要生成URL,您需要目标页面和节。要在HTML中生成链接,还需要表面文本(如果没有提供),它与目标页面+部分相同。目前没有一种简单的方法可以在没有完整wikitext处理的情况下解析链接

如果你已经有了目标页面的标题,也许还有一个分区id,那么你有两种选择来获取它的URL:一种是老式的单一方式,另一种是新型的基于服务的方式

新的样式方法是:

使用MediaWikiTitleCodec::parseTitle从您拥有的字符串生成TitleValue对象。 使用MediaWikiPageLinkRenderer::getPageURL获取给定标题值对象的页面URL。 传统的方法是:

使用Title::newFromText从您拥有的字符串中创建Title对象。 使用Title::getFullURL获取页面URL。
旧样式更容易,因为它不需要您创建服务对象。它依赖于全局状态,并且具有所有硬编码的依赖项。新样式使用简单的依赖项注入,允许单独交换所有部分并进行独立测试,但需要更多的代码。

这有两个部分:

解析链接语法。 从页面标题生成URL。 解析链接由Parser类完成,Parser类完成所有wikitext处理。链接可能比[[Foo]]更复杂,例如[[Foobar | something]],其中Foo是目标页面,bar是一个部分,something是结果链接的表面文本。要生成URL,您需要目标页面和节。要在HTML中生成链接,还需要表面文本(如果没有提供),它与目标页面+部分相同。目前没有一种简单的方法可以在没有完整wikitext处理的情况下解析链接

如果你已经有了目标页面的标题,也许还有一个分区id,那么你有两种选择来获取它的URL:一种是老式的单一方式,另一种是新型的基于服务的方式

新的样式方法是:

使用MediaWikiTitleCodec::parseTitle从您拥有的字符串生成TitleValue对象。 使用MediaWikiPageLinkRenderer::getPageURL获取给定标题值对象的页面URL。 传统的方法是:

使用Title::newFromText从您拥有的字符串中创建Title对象。 使用Title::getFullURL获取页面URL。
旧样式更容易,因为它不需要您创建服务对象。它依赖于全局状态,并且具有所有硬编码的依赖项。新样式使用简单的依赖项注入,允许单独交换所有部件并进行独立测试,但需要更多的代码。

谢谢brightbyte,这正是我想要的。我已经在浏览有问题的代码部分了。我需要用另一种语言复制相同的行为,这也是我的兴趣所在。MediaWiki有几种机器人/客户端框架,如pywikibot或JWBF,请参阅。它们必须具有将页面标题转换为完整URL的功能。也许你可以看看那里。谢谢你,那正是我要找的。我已经在浏览有问题的代码部分了。我需要用另一种语言复制相同的行为,这也是我的兴趣所在。MediaWiki有几种机器人/客户端框架,如pywikibot或JWBF,请参阅。它们必须具有将页面标题转换为完整URL的功能。也许你可以看看那里。更多地了解你的用例会很有用。更多地了解你的用例会很有用。