2016-04-18 5 views
3

Ich habe gerade this Wikipedia-Seite aus Neugier gelesen, und ich frage mich, ob ein Programmierer oder Web-Entwickler mir erklären könnte, wie eine bestimmte Funktion von ihm und anderen Websites (einschließlich StackExchange) auf dem Back-End arbeiten.Wie transformiert Wikipedia und andere Websites automatisch, was ein Benutzer zwischen bestimmten Tags in bestimmte Arten von Links eingibt?

Wenn Sie einen Link zu einem Artikel erstellen möchten, aber einen anderen Text für den Link anzeigen möchten, können Sie dies tun, indem Sie die Pipe "|" Teiler (SHIFT + BACKSLASH auf Englisch-Layout und anderen Tastaturen) gefolgt von dem alternativen Namen. Platzieren Sie den Artikel, den Sie verknüpfen möchten, vor dem Rohrtrenner und den Text nach dem Rohrtrenner. Zwei Beispiele:

  1. : [[Fox Broadcasting Company | Fox]] Im fertigen Artikel wird der Text lesen 'Fox' und Link zum Artikel mit dem Titel 'Fox Broadcasting Company'.

  2. ...

Wie Wikipedia und Stack wissen etwas in Klammern [[]] in einen Link zu einem Wikipedia-Artikel zu verwandeln? Ist es ein serverseitiger Controller, wie ich es in meinem .NET-Anfängerkurs gelernt habe?

Antwort

1

Wikipedia ist powered by MediaWiki das ist eine freie und Open-Source-Software in PHP geschrieben. Eine der Schlüsseldateien im MediaWiki-Quellcode ist Linker.php, die "enthält Methoden zum Erstellen von internen, externen oder Bild-Links".

In sehr kurzen ..., hier werden in der Klasse Linker durch Funktion formatLinksInComment() alle Wiki-Links und Media-Links aus dem Text mit regex extrahiert: /\[\[(.*?)\]\]/ und \[\[:?([^\]|]+)(?:\|((?:]?[^\]|])*+))*\]\]([^[]*) (here und here Sie ein Beispiel sehen, wie es funktioniert). Die Links werden von getLinkColour() für ihre Farbe überprüft - blau für gültig und rot für ungültige Links. Danach werden diese Links in HTML-Links gedreht (auf die wirklichen Ziele) durch link(), die auch einige Klassen auf diese ein-Tags ergänzt, wie class="new" für rote Links, class="stub" für kurze Artikel, usw.