エイリアスでは
[[ほげほげ>ページ名#anchor]]
という書き方ができるようになったけど、InterWikiでは
[[ほげほげ:ページ名#anchor]]
とは書けない。
#も%23にエンコードされてしまうのが理由。#をエンコードしないで出力できれば…
diff -u -r1.32 make_link.php --- make_link.php Mar 2003 15:13:02 -0000 1.32 +++ make_link.php1 Apr 2003 09:15:26 -0000 @@ -391,6 +391,8 @@ //InterWikiName class Link_interwikiname extends Link { + var $anchor = ''; + function Link_interwikiname($start) { parent::Link($start); @@ -434,8 +436,14 @@ { $arr = $this->splice($arr); + $param = $arr[6]; + if (preg_match('/^([^#]+)(#[A-Za-z][\w-]*)$/',$param,$matches)) + { + $this->anchor = $matches[2]; + $param = $matches[1]; + } - $name = '[['.$arr[4].$arr[6].']]'; - $alias = ($arr[2] != '') ? $arr[2] : strip_bracket($name); + $name = '[['.$arr[4].$param.']]'; + $alias = ($arr[2] != '') ? $arr[2] : $arr[4].$arr[6]; return parent::setParam($page,$name,'InterWikiName',$alias); } @@ -444,7 +452,7 @@ global $script; //,$interwiki_target; $r_name = rawurlencode($this->name); - return "<a href=\"$script?$r_name\">{$this->alias}</a>"; + return "<a href=\"$script?$r_name{$this->anchor}\">{$this->alias}</a>"; } } // BracketName