Php “怎么说?”;编辑部分";维基百科工作的特色?

Php “怎么说?”;编辑部分";维基百科工作的特色?,php,parsing,content-management-system,mediawiki,Php,Parsing,Content Management System,Mediawiki,Wikipedia如何为其文章实现“编辑此部分”功能,用户可以编辑文章的一部分,而不是整篇文章?我试着自己在mediawiki的代码中爬行,但对我来说理解起来有点难。以下是我的猜测(但只是猜测): 用户点击文章中的[编辑]。这将链接到常规编辑页面,但在URL中通过GET传递了一个附加参数,指定要编辑的节。如果没有这个额外的参数,Mediawiki通常只向用户提供一个编辑整个页面的表单。但指定要编辑的节会导致Mediawiki仅提取该节并将其呈现给编辑 让我感到困惑的是Mediawiki是如何解析

Wikipedia如何为其文章实现“编辑此部分”功能,用户可以编辑文章的一部分,而不是整篇文章?我试着自己在mediawiki的代码中爬行,但对我来说理解起来有点难。以下是我的猜测(但只是猜测):

用户点击文章中的[编辑]。这将链接到常规编辑页面,但在URL中通过GET传递了一个附加参数,指定要编辑的节。如果没有这个额外的参数,Mediawiki通常只向用户提供一个编辑整个页面的表单。但指定要编辑的节会导致Mediawiki仅提取该节并将其呈现给编辑

让我感到困惑的是Mediawiki是如何解析各个部分的?据我所知,MW并没有单独存储这些部分——它将页面每个版本的每个完整版本存储为一大块文本(除了大量元数据)。MW只是寻找H1,H2,H3。。。标记,并在呈现页面时使用这些标记将文本分割为多个区域?当用户保存一个修改过的部分时,是否会查看当前版本,将文本重新解析为部分,然后将新版本“注入”到当前版本的副本中,然后将其保存为新版本

我想我对MediaWiki的理解已经大大简化了,但我只是想大致了解一下


谢谢

这可能是一个线索-来自。这些部分使用特定的标记,例如:

==Section==

===Subsection===

====Sub-subsection====
  • 在页面上多次使用同一标题会导致问题
  • 编辑具有重复名称的节时,编辑历史记录和摘要对于编辑的节将不明确
  • 编辑节后保存页面时,编辑器的浏览器可能会导航到错误的节
可以通过单击标题中标记为“[edit]”的特殊编辑链接或通过右键单击章节标题(取决于首选项集)来单独编辑章节。这称为“节编辑功能”(首选项->编辑->“通过[编辑]链接启用节编辑”)。节编辑功能将通过URL(例如)将您带到编辑页面

请注意,此处使用的是章节编号,而不是章节标题;子章节只有一个编号,例如第2.1节可能编号为3,第3节随后编号为4,等等。您也可以直接在浏览器的地址栏中键入此类URL

因此,看起来解析器在TOC中有一定数量的节,然后使用=标记将特定文本放入编辑器中

以下是使用的一些表格:

页面表-()-MediaWiki安装中的每个页面都有一个按标题标识的条目

修订表保存对wiki内页面进行的每次编辑的元数据。页面的每一次编辑都会创建一个修订行,其中包含诸如进行编辑的用户、进行编辑的时间以及对文本表中新wikitext的引用等信息

文本表-保存单个页面修订的wikitext

页面的内容存储为blob。所以它必须用二进制进行解析

希望这有帮助