* @return LinkTarget
*/
public static function normaliseSpecialPage( LinkTarget $target ) {
- if ( $target->getNamespace() == NS_SPECIAL ) {
+ if ( $target->getNamespace() == NS_SPECIAL && !$target->isExternal() ) {
list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $target->getDBkey() );
if ( !$name ) {
return $target;
:? # ignore optional leading colon
([^\]|]+) # 1. link target; page names cannot include ] or |
(?:\|
- # 2. a pipe-separated substring; only the last is captured
- # Stop matching at | and ]] without relying on backtracking.
- ((?:]?[^\]|])*+)
- )*
+ # 2. link text
+ # Stop matching at ]] without relying on backtracking.
+ ((?:]?[^\]])*+)
+ )?
\]\]
([^[]*) # 3. link trail (the text up until the next link)
/x',