Manual:Title.php

From MediaWiki.org
Jump to: navigation, search
MediaWiki File: Title.php
Location: /includes/
Source code:

HEAD1.19.0rc1
1.19.01.18.3

Classes: Title


The MediaWiki software's Title class represents article titles, which are used for many purposes, including:

  • as the human-readable text title of the article
  • in the URL used to access the article
  • the wikitext link to the article
  • the key into the article database

The class is instantiated with one of these formats. Once instantiated, the title can be retrieved in other formats or queried for its attributes. Title is intended to be an immutable "value" class, so there are no mutator functions.

To instantiate Title, call one of the static factory methods:

  • Title::newFromURL()
  • Title::newFromDBKey()
  • Title::newFromText()

Once instantiated, the other non-static accessor methods can be used, such as getText(), getDBKey(), getNamespace(), etc.

Contents

[edit] Title structure

A title consists of an optional Interwiki prefix (such as "m:" for pages from mediawiki.org or "w:" for Wikipedia articles), followed by an optional namespace (such as "Manual:"), followed by the article name.

prefix: namespace: article name
optional optional required

[edit] Interwiki prefixes and namespaces

Interwiki prefixes and namespaces follow the same content rules:

  • they must start with a letter
  • they must end with a colon
  • they may only contain digits, letters, the space character and the underscore character
  • spaces and underscores may be used interchangeably
  • they are case-insensitive

Interwiki prefixes and namespaces are only recognized if they are known to a given installation of MediaWiki, either by default or through configuration.

For example: On this wiki, "w:Name" is a link to the article "Name" on Wikipedia, because "w" is recognized as one of the allowable interwiki prefixes. The title "talk:Name" is a link to the article "name" in the "talk" namespace of the current wiki, because "talk" is a recognized namespace. Both may be present, and if so, the interwiki must come first, for example, "w:talk:name".

If a title begins with a colon as its first character, no prefixes are scanned for, and the colon is removed before the title is processed. Because of this rule, it is possible to have articles with colons in their names. "E. Coli 0157:H7" is a valid title, as is "2001: A Space Odyssey", because "E. Coli 0157" and "2001" are not valid interwikis or namespaces.

[edit] Article name

In the article name spaces and underscores are treated as equivalent and each is converted to the other in the appropriate context (underscore in URL and database keys, spaces in plain text). "Extended" characters in the 0x80..0xFF range are allowed in all places, and are valid characters. They are encoded in URLs. Extended characters are not urlencoded when used as text or database keys. Other characters may be ASCII letters, digits, hyphen, comma, period, apostrophe, parentheses and colon. No other ASCII characters are allowed, and will be deleted if found (they will probably cause a browser to misinterpret the URL).

[edit] Canonical forms

The canonical form of a title will always be returned by the object. In this form, the first (and only the first) character of the namespace and title will be uppercase; the rest of the namespace will be lowercase, while the rest of the title will be left as is.

The text form will use spaces, the URL and DBkey forms will use underscores. Interwiki prefixes are all lowercase. The namespace will use underscores when returned alone; it will use spaces only when attached to the text title.

getArticleID() needs some explanation: for "internal" articles, it should return the "page_id" field if the article exists, else it returns 0. For all external articles it returns 0. All of the IDs for all instances of Title created during a request are cached, so they can be looked up quickly while rendering wikitext with lots of internal links.

[edit] Example

To check and see if a given page already exists:

$titleObject = Title::newFromText( 'Talk:Your desired title here' );
if ( !$titleObject->exists() ) echo "There is no page with that name.";

Create a new Title from text, such as what one would find in a link. Decodes any HTML entities in the text. Spaces, prefixes, and an initial ':' indicating the main namespace are accepted. Note that if the page does not exist, this will not create it. For that, see Manual:Article.php.

[edit] See also

Language: English  • 日本語
Personal tools
Namespaces

Variants
Actions
Navigation
Support
Download
Development
Communication
Print/export
Toolbox