/////////////////////////////////////////////////
// PukiWiki - Yet another WikiWikiWeb clone.
//
-// $Id: make_link.php,v 1.2 2004/09/19 14:05:30 henoheno Exp $
+// $Id: make_link.php,v 1.3 2004/10/13 15:08:35 henoheno Exp $
//
// ¥ê¥ó¥¯¤òÉղ乤ë
-function make_link($string,$page = '')
+function make_link($string, $page = '')
{
global $vars;
static $converter;
- if (!isset($converter))
- {
- $converter = new InlineConverter();
- }
- $_converter = $converter->get_clone($converter);
- return $_converter->convert($string, ($page != '') ? $page : $vars['page']);
+ if (! isset($converter)) $converter = new InlineConverter();
+
+ $clone = $converter->get_clone($converter);
+
+ return $clone->convert($string, ($page != '') ? $page : $vars['page']);
}
+
//¥¤¥ó¥é¥¤¥óÍ×ÁǤòÃÖ´¹¤¹¤ë
class InlineConverter
{
function get_clone($obj) {
static $clone_func;
- if (!isset($clone_func)) {
- if (version_compare(PHP_VERSION,'5.0.0','<')) {
- $clone_func = create_function('$a','return $a;');
+ if (! isset($clone_func)) {
+ if (version_compare(PHP_VERSION, '5.0.0', '<')) {
+ $clone_func = create_function('$a', 'return $a;');
} else {
- $clone_func = create_function('$a','return clone $a;');
+ $clone_func = create_function('$a', 'return clone $a;');
}
}
return $clone_func($obj);
}
+
function __clone() {
$converters = array();
foreach ($this->converters as $key=>$converter) {
}
$this->converters = $converters;
}
- function InlineConverter($converters=NULL,$excludes=NULL)
+
+ function InlineConverter($converters = NULL, $excludes = NULL)
{
- if ($converters === NULL)
- {
+ if ($converters === NULL) {
$converters = array(
'plugin', // ¥¤¥ó¥é¥¤¥ó¥×¥é¥°¥¤¥ó
'note', // Ãí¼á
'autolink_a', // AutoLink(¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È)
);
}
+
if ($excludes !== NULL)
- {
- $converters = array_diff($converters,$excludes);
- }
- $this->converters = array();
- $patterns = array();
+ $converters = array_diff($converters, $excludes);
+
+ $this->converters = $patterns = array();
$start = 1;
- foreach ($converters as $name)
- {
+ foreach ($converters as $name) {
$classname = "Link_$name";
$converter = new $classname($start);
- $pattern = $converter->get_pattern();
- if ($pattern === FALSE)
- {
- continue;
- }
+ $pattern = $converter->get_pattern();
+ if ($pattern === FALSE) continue;
+
$patterns[] = "(\n$pattern\n)";
$this->converters[$start] = $converter;
$start += $converter->get_count();
- $start++;
+ ++$start;
}
- $this->pattern = join('|',$patterns);
+ $this->pattern = join('|', $patterns);
}
- function convert($string,$page)
+
+ function convert($string, $page)
{
- $this->page = $page;
+ $this->page = $page;
$this->result = array();
- $string = preg_replace_callback("/{$this->pattern}/x",array(&$this,'replace'),$string);
+ $string = preg_replace_callback("/{$this->pattern}/x",
+ array(& $this, 'replace'), $string);
- $arr = explode("\x08",make_line_rules(htmlspecialchars($string)));
+ $arr = explode("\x08", make_line_rules(htmlspecialchars($string)));
$retval = '';
- while (count($arr))
- {
- $retval .= array_shift($arr).array_shift($this->result);
+ while (! empty($arr)) {
+ $retval .= array_shift($arr) . array_shift($this->result);
}
return $retval;
}
+
function replace($arr)
{
$obj = $this->get_converter($arr);
- $this->result[] = ($obj !== NULL and $obj->set($arr,$this->page) !== FALSE) ?
+ $this->result[] = ($obj !== NULL && $obj->set($arr, $this->page) !== FALSE) ?
$obj->toString() : make_line_rules(htmlspecialchars($arr[0]));
return "\x08"; //½èÍýºÑ¤ß¤ÎÉôʬ¤Ë¥Þ¡¼¥¯¤òÆþ¤ì¤ë
}
- function get_objects($string,$page)
+
+ function get_objects($string, $page)
{
- preg_match_all("/{$this->pattern}/x",$string,$matches,PREG_SET_ORDER);
+ preg_match_all("/{$this->pattern}/x", $string, $matches, PREG_SET_ORDER);
$arr = array();
- foreach ($matches as $match)
- {
+ foreach ($matches as $match) {
$obj = $this->get_converter($match);
- if ($obj->set($match,$page) !== FALSE)
- {
+ if ($obj->set($match, $page) !== FALSE) {
$arr[] = $this->get_clone($obj);
if ($obj->body != '')
- {
- $arr = array_merge($arr,$this->get_objects($obj->body,$page));
- }
+ $arr = array_merge($arr, $this->get_objects($obj->body, $page));
}
}
return $arr;
}
- function &get_converter(&$arr)
+
+ function & get_converter(& $arr)
{
- foreach (array_keys($this->converters) as $start)
- {
+ foreach (array_keys($this->converters) as $start) {
if ($arr[$start] == $arr[0])
- {
return $this->converters[$start];
- }
}
return NULL;
}
}
+
//¥¤¥ó¥é¥¤¥óÍ×Áǽ¸¹ç¤Î¥Ù¡¼¥¹¥¯¥é¥¹
class Link
{
{
$this->start = $start;
}
+
// ¥Þ¥Ã¥Á¤Ë»ÈÍѤ¹¤ë¥Ñ¥¿¡¼¥ó¤òÊÖ¤¹
- function get_pattern()
- {
- }
+ function get_pattern() {}
+
// »ÈÍѤ·¤Æ¤¤¤ë³ç¸Ì¤Î¿ô¤òÊÖ¤¹ ((?:...)¤ò½ü¤¯)
- function get_count()
- {
- }
+ function get_count() {}
+
// ¥Þ¥Ã¥Á¤·¤¿¥Ñ¥¿¡¼¥ó¤òÀßÄꤹ¤ë
- function set($arr,$page)
- {
- }
+ function set($arr,$page) {}
+
// ʸ»úÎó¤ËÊÑ´¹¤¹¤ë
- function toString()
- {
- }
+ function toString() {}
- //private
+ // Private
// ¥Þ¥Ã¥Á¤·¤¿ÇÛÎ󤫤顢¼«Ê¬¤ËɬÍפÊÉôʬ¤À¤±¤ò¼è¤ê½Ð¤¹
- function splice($arr)
- {
+ function splice($arr) {
$count = $this->get_count() + 1;
- $arr = array_pad(array_splice($arr,$this->start,$count),$count,'');
+ $arr = array_pad(array_splice($arr, $this->start, $count), $count, '');
$this->text = $arr[0];
return $arr;
}
+
// ´ðËܥѥé¥á¡¼¥¿¤òÀßÄꤹ¤ë
- function setParam($page,$name,$body,$type='',$alias='')
+ function setParam($page, $name, $body, $type = '', $alias = '')
{
static $converter = NULL;
$this->name = $name;
$this->body = $body;
$this->type = $type;
- if ($type != 'InterWikiName' and preg_match('/\.(gif|png|jpe?g)$/i',$alias))
- {
+ if ($type != 'InterWikiName' && preg_match('/\.(gif|png|jpe?g)$/i', $alias)) {
$alias = htmlspecialchars($alias);
$alias = "<img src=\"$alias\" alt=\"$name\" />";
- }
- else if ($alias != '')
- {
+ } else if ($alias != '') {
if ($converter === NULL)
- {
$converter = new InlineConverter(array('plugin'));
- }
- $alias = make_line_rules($converter->convert($alias,$page));
+ $alias = make_line_rules($converter->convert($alias, $page));
}
$this->alias = $alias;
return TRUE;
}
}
+
// ¥¤¥ó¥é¥¤¥ó¥×¥é¥°¥¤¥ó
class Link_plugin extends Link
{
{
parent::Link($start);
}
+
function get_pattern()
{
$this->pattern = <<<EOD
;
EOD;
}
+
function get_count()
{
return 4;
}
- function set($arr,$page)
+
+ function set($arr, $page)
{
- list($all,$this->plain,$name,$this->param,$body) = $this->splice($arr);
+ list($all, $this->plain, $name, $this->param, $body) = $this->splice($arr);
// ËÜÍè¤Î¥×¥é¥°¥¤¥ó̾¤ª¤è¤Ó¥Ñ¥é¥á¡¼¥¿¤ò¼èÆÀ¤·¤Ê¤ª¤¹ PHP4.1.2 (?R)Âкö
- if (preg_match("/^{$this->pattern}/x",$all,$matches)
- and $matches[1] != $this->plain)
+ if (preg_match("/^{$this->pattern}/x", $all, $matches)
+ && $matches[1] != $this->plain)
{
- list(,$this->plain,$name,$this->param) = $matches;
+ list(, $this->plain, $name, $this->param) = $matches;
}
- return parent::setParam($page,$name,$body,'plugin');
+ return parent::setParam($page, $name, $body, 'plugin');
}
+
function toString()
{
$body = ($this->body == '') ? '' : make_link($this->body);
// ¥×¥é¥°¥¤¥ó¸Æ¤Ó½Ð¤·
- if (exist_plugin_inline($this->name))
- {
- $str = do_plugin_inline($this->name,$this->param,$body);
+ if (exist_plugin_inline($this->name)) {
+ $str = do_plugin_inline($this->name, $this->param, $body);
if ($str !== FALSE) //À®¸ù
- {
return $str;
- }
}
// ¥×¥é¥°¥¤¥ó¤¬Â¸ºß¤·¤Ê¤¤¤«¡¢ÊÑ´¹¤Ë¼ºÇÔ
$body = ($body == '') ? ';' : "\{$body};";
- return make_line_rules(htmlspecialchars('&'.$this->plain).$body);
+ return make_line_rules(htmlspecialchars('&' . $this->plain) . $body);
}
}
+
// Ãí¼á
class Link_note extends Link
{
{
parent::Link($start);
}
+
function get_pattern()
{
return <<<EOD
\)\)
EOD;
}
+
function get_count()
{
return 1;
}
- function set($arr,$page)
+
+ function set($arr, $page)
{
global $foot_explain;
static $note_id = 0;
- list(,$body) = $this->splice($arr);
+ list(, $body) = $this->splice($arr);
- $id = ++$note_id;
+ $id = ++$note_id;
$note = make_link($body);
$foot_explain[$id] = <<<EOD
EOD;
$name = "<a id=\"notetext_$id\" href=\"#notefoot_$id\" class=\"note_super\">*$id</a>";
- return parent::setParam($page,$name,$body);
+ return parent::setParam($page, $name, $body);
}
+
function toString()
{
return $this->name;
}
}
+
// url
class Link_url extends Link
{
{
parent::Link($start);
}
+
function get_pattern()
{
$s1 = $this->start + 1;
(?($s1)\]\]) # close bracket
EOD;
}
+
function get_count()
{
return 3;
}
- function set($arr,$page)
+
+ function set($arr, $page)
{
- list(,,$alias,$name) = $this->splice($arr);
- return parent::setParam($page,htmlspecialchars($name),'','url',$alias == '' ? $name : $alias);
+ list(, , $alias, $name) = $this->splice($arr);
+ return parent::setParam($page, htmlspecialchars($name),
+ '', 'url', $alias == '' ? $name : $alias);
}
+
function toString()
{
return "<a href=\"{$this->name}\">{$this->alias}</a>";
}
}
+
// url (InterWiki definition type)
class Link_url_interwiki extends Link
{
{
parent::Link($start);
}
+
function get_pattern()
{
return <<<EOD
\] # close bracket
EOD;
}
+
function get_count()
{
return 2;
}
- function set($arr,$page)
+
+ function set($arr, $page)
{
- list(,$name,$alias) = $this->splice($arr);
- return parent::setParam($page,htmlspecialchars($name),'','url',$alias);
+ list(, $name, $alias) = $this->splice($arr);
+ return parent::setParam($page, htmlspecialchars($name), '', 'url', $alias);
}
+
function toString()
{
return "<a href=\"{$this->name}\">{$this->alias}</a>";
}
}
+
//mailto:
class Link_mailto extends Link
{
- var $is_image,$image;
+ var $is_image, $image;
function Link_mailto($start)
{
parent::Link($start);
}
+
function get_pattern()
{
$s1 = $this->start + 1;
(?($s1)\]\]) # close bracket if (1)
EOD;
}
+
function get_count()
{
return 2;
}
- function set($arr,$page)
+
+ function set($arr, $page)
{
- list(,$alias,$name) = $this->splice($arr);
- return parent::setParam($page,$name,'','mailto',$alias == '' ? $name : $alias);
+ list(, $alias, $name) = $this->splice($arr);
+ return parent::setParam($page, $name, '', 'mailto', $alias == '' ? $name : $alias);
}
+
function toString()
{
return "<a href=\"mailto:{$this->name}\">{$this->alias}</a>";
}
}
+
//InterWikiName
class Link_interwikiname extends Link
{
- var $url = '';
- var $param = '';
+ var $url = '';
+ var $param = '';
var $anchor = '';
function Link_interwikiname($start)
{
parent::Link($start);
}
+
function get_pattern()
{
$s2 = $this->start + 2;
\]\] # close bracket
EOD;
}
+
function get_count()
{
return 5;
}
- function set($arr,$page)
+
+ function set($arr, $page)
{
global $script;
- list(,$alias,,$name,$this->param) = $this->splice($arr);
+ list(, $alias, , $name, $this->param) = $this->splice($arr);
- if (preg_match('/^([^#]+)(#[A-Za-z][\w-]*)$/',$this->param,$matches))
- {
- list(,$this->param,$this->anchor) = $matches;
- }
- $url = get_interwiki_url($name,$this->param);
+ if (preg_match('/^([^#]+)(#[A-Za-z][\w-]*)$/', $this->param, $matches))
+ list(, $this->param, $this->anchor) = $matches;
+
+ $url = get_interwiki_url($name, $this->param);
$this->url = ($url === FALSE) ?
- $script.'?'.rawurlencode('[['.$name.':'.$this->param.']]') :
+ $script . '?' . rawurlencode('[[' . $name . ':' . $this->param . ']]') :
htmlspecialchars($url);
return parent::setParam(
$page,
- htmlspecialchars($name.':'.$this->param),
+ htmlspecialchars($name . ':' . $this->param),
'',
'InterWikiName',
- $alias == '' ? $name.':'.$this->param : $alias
+ $alias == '' ? $name . ':' . $this->param : $alias
);
}
+
function toString()
{
return "<a href=\"{$this->url}{$this->anchor}\" title=\"{$this->name}\">{$this->alias}</a>";
}
}
+
// BracketName
class Link_bracketname extends Link
{
- var $anchor,$refer;
+ var $anchor, $refer;
function Link_bracketname($start)
{
parent::Link($start);
}
+
function get_pattern()
{
- global $WikiName,$BracketName;
+ global $WikiName, $BracketName;
$s2 = $this->start + 2;
return <<<EOD
\]\] # close bracket
EOD;
}
+
function get_count()
{
return 4;
}
- function set($arr,$page)
+
+ function set($arr, $page)
{
global $WikiName;
- list(,$alias,,$name,$this->anchor) = $this->splice($arr);
+ list(, $alias, , $name, $this->anchor) = $this->splice($arr);
- if ($name == '' and $this->anchor == '')
- {
- return FALSE;
- }
- if ($name != '' and preg_match("/^$WikiName$/",$name))
- {
- return parent::setParam($page,$name,'','pagename',$alias);
- }
- if ($alias == '')
- {
- $alias = $name.$this->anchor;
- }
- if ($name == '')
- {
- if ($this->anchor == '')
- {
- return FALSE;
- }
- }
- else
- {
- $name = get_fullname($name,$page);
- if (!is_pagename($name))
- {
- return FALSE;
+ if ($name == '' && $this->anchor == '') return FALSE;
+
+ if ($name == '' || ! preg_match("/^$WikiName$/", $name)) {
+
+ if ($alias == '') $alias = $name . $this->anchor;
+
+ if ($name != '') {
+ $name = get_fullname($name, $page);
+ if (! is_pagename($name)) return FALSE;
}
}
- return parent::setParam($page,$name,'','pagename',$alias);
+
+ return parent::setParam($page, $name, '', 'pagename', $alias);
}
+
function toString()
{
return make_pagelink(
);
}
}
+
// WikiName
class Link_wikiname extends Link
{
{
parent::Link($start);
}
+
function get_pattern()
{
- global $WikiName,$nowikiname;
+ global $WikiName, $nowikiname;
- return $nowikiname ? FALSE : "($WikiName)";
+ return $nowikiname ? FALSE : '(' . $WikiName . ')';
}
+
function get_count()
{
return 1;
}
- function set($arr,$page)
+
+ function set($arr, $page)
{
list($name) = $this->splice($arr);
- return parent::setParam($page,$name,'','pagename',$name);
+ return parent::setParam($page, $name, '', 'pagename', $name);
}
+
function toString()
{
return make_pagelink(
);
}
}
+
// AutoLink
class Link_autolink extends Link
{
parent::Link($start);
- if (!$autolink or !file_exists(CACHE_DIR.'autolink.dat'))
- {
+ if (! $autolink || ! file_exists(CACHE_DIR . 'autolink.dat'))
return;
- }
- @list($auto,$auto_a,$forceignorepages) = file(CACHE_DIR.'autolink.dat');
- $this->auto = $auto;
+
+ @list($auto, $auto_a, $forceignorepages) = file(CACHE_DIR . 'autolink.dat');
+ $this->auto = $auto;
$this->auto_a = $auto_a;
- $this->forceignorepages = explode("\t",trim($forceignorepages));
+ $this->forceignorepages = explode("\t", trim($forceignorepages));
}
+
function get_pattern()
{
return isset($this->auto) ? "({$this->auto})" : FALSE;
}
+
function get_count()
{
return 1;
}
- function set($arr,$page)
+
+ function set($arr, $page)
{
global $WikiName;
list($name) = $this->splice($arr);
+
// ̵»ë¥ê¥¹¥È¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¡¢¤¢¤ë¤¤¤Ï¸ºß¤·¤Ê¤¤¥Ú¡¼¥¸¤ò¼Î¤Æ¤ë
- if (in_array($name,$this->forceignorepages) or !is_page($name))
- {
+ if (in_array($name, $this->forceignorepages) || ! is_page($name))
return FALSE;
- }
- return parent::setParam($page,$name,'','pagename',$name);
+
+ return parent::setParam($page, $name, '', 'pagename', $name);
}
+
function toString()
{
return make_pagelink(
);
}
}
+
class Link_autolink_a extends Link_autolink
{
function Link_autolink_a($start)
{
parent::Link_autolink($start);
}
+
function get_pattern()
{
- return isset($this->auto_a) ? "({$this->auto_a})" : FALSE;
+ return isset($this->auto_a) ? '(' . $this->auto_a . ')' : FALSE;
}
}
// ¥Ú¡¼¥¸Ì¾¤Î¥ê¥ó¥¯¤òºîÀ®
-function make_pagelink($page,$alias='',$anchor='',$refer='')
+function make_pagelink($page, $alias = '', $anchor = '', $refer = '')
{
- global $script,$vars,$show_title,$show_passage,$link_compact,$related;
+ global $script, $vars, $show_title, $show_passage, $link_compact, $related;
global $_symbol_noexists;
$s_page = htmlspecialchars(strip_bracket($page));
$s_alias = ($alias == '') ? $s_page : $alias;
- if ($page == '')
- {
- return "<a href=\"$anchor\">$s_alias</a>";
- }
+ if ($page == '') return "<a href=\"$anchor\">$s_alias</a>";
- $r_page = rawurlencode($page);
- $r_refer = ($refer == '') ? '' : '&refer='.rawurlencode($refer);
+ $r_page = rawurlencode($page);
+ $r_refer = ($refer == '') ? '' : '&refer=' . rawurlencode($refer);
- if (!array_key_exists($page,$related) and $page != $vars['page'] and is_page($page))
- {
+ if (! isset($related[$page]) && $page != $vars['page'] && is_page($page))
$related[$page] = get_filetime($page);
- }
- if (is_page($page))
- {
- $passage = get_pg_passage($page,FALSE);
- $title = $link_compact ? '' : " title=\"$s_page$passage\"";
+ if (is_page($page)) {
+ $passage = get_pg_passage($page, FALSE);
+ $title = $link_compact ? '' : " title=\"$s_page$passage\"";
return "<a href=\"$script?$r_page$anchor\"$title>$s_alias</a>";
- }
- else
- {
+ } else {
$retval = "$s_alias<a href=\"$script?cmd=edit&page=$r_page$r_refer\">$_symbol_noexists</a>";
- if (!$link_compact)
- {
+ if (! $link_compact)
$retval = "<span class=\"noexists\">$retval</span>";
- }
return $retval;
}
}
+
// ÁêÂл²¾È¤òŸ³«
-function get_fullname($name,$refer)
+function get_fullname($name, $refer)
{
global $defaultpage;
- if ($name == '')
- {
- return $refer;
- }
+ if ($name == '') return $refer;
- if ($name{0} == '/')
- {
- $name = substr($name,1);
+ if ($name{0} == '/') {
+ $name = substr($name, 1);
return ($name == '') ? $defaultpage : $name;
}
- if ($name == './')
- {
- return $refer;
- }
-
- if (substr($name,0,2) == './')
- {
- $arrn = preg_split('/\//',$name,-1,PREG_SPLIT_NO_EMPTY);
+ if ($name == './') return $refer;
+ if (substr($name, 0, 2) == './') {
+ $arrn = preg_split('/\//', $name, -1, PREG_SPLIT_NO_EMPTY);
$arrn[0] = $refer;
- return join('/',$arrn);
+ return join('/', $arrn);
}
- if (substr($name,0,3) == '../')
- {
- $arrn = preg_split('/\//',$name,-1,PREG_SPLIT_NO_EMPTY);
- $arrp = preg_split('/\//',$refer,-1,PREG_SPLIT_NO_EMPTY);
+ if (substr($name, 0, 3) == '../') {
+ $arrn = preg_split('/\//', $name, -1, PREG_SPLIT_NO_EMPTY);
+ $arrp = preg_split('/\//', $refer, -1, PREG_SPLIT_NO_EMPTY);
- while (count($arrn) > 0 and $arrn[0] == '..')
- {
+ while (! empty($arrn) && $arrn[0] == '..') {
array_shift($arrn);
array_pop($arrp);
}
- $name = count($arrp) ? join('/',array_merge($arrp,$arrn)) :
- (count($arrn) ? "$defaultpage/".join('/',$arrn) : $defaultpage);
+ $name = ! empty($arrp) ? join('/', array_merge($arrp, $arrn)) :
+ (! empty($arrn) ? "$defaultpage/" . join('/', $arrn) : $defaultpage);
}
+
return $name;
}
// InterWikiName¤òŸ³«
-function get_interwiki_url($name,$param)
+function get_interwiki_url($name, $param)
{
- global $WikiName,$interwiki;
+ global $WikiName, $interwiki;
static $interwikinames;
- static $encode_aliases = array('sjis'=>'SJIS','euc'=>'EUC-JP','utf8'=>'UTF-8');
+ static $encode_aliases = array('sjis'=>'SJIS', 'euc'=>'EUC-JP', 'utf8'=>'UTF-8');
- if (!isset($interwikinames))
- {
+ if (! isset($interwikinames)) {
$interwikinames = array();
- foreach (get_source($interwiki) as $line)
- {
- if (preg_match('/\[((?:(?:https?|ftp|news):\/\/|\.\.?\/)[!~*\'();\/?:\@&=+\$,%#\w.-]*)\s([^\]]+)\]\s?([^\s]*)/',$line,$matches))
- {
- $interwikinames[$matches[2]] = array($matches[1],$matches[3]);
- }
+ foreach (get_source($interwiki) as $line) {
+ if (preg_match('/\[((?:(?:https?|ftp|news):\/\/|\.\.?\/)[!~*\'();\/?:\@&=+\$,%#\w.-]*)\s([^\]]+)\]\s?([^\s]*)/', $line, $matches))
+ $interwikinames[$matches[2]] = array($matches[1], $matches[3]);
}
}
- if (!array_key_exists($name,$interwikinames))
- {
- return FALSE;
- }
+
+ if (! isset($interwikinames[$name])) return FALSE;
+
list($url,$opt) = $interwikinames[$name];
// ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- switch ($opt)
- {
- // YukiWiki·Ï
- case 'yw':
- if (!preg_match("/$WikiName/",$param))
- {
- $param = '[['.mb_convert_encoding($param,'SJIS',SOURCE_ENCODING).']]';
- }
-// $param = htmlspecialchars($param);
- break;
-
- // moin·Ï
- case 'moin':
- $param = str_replace('%','_',rawurlencode($param));
- break;
-
- // ÆâÉôʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î¤Þ¤ÞURL¥¨¥ó¥³¡¼¥É
- case '':
- case 'std':
- $param = rawurlencode($param);
- break;
-
- // URL¥¨¥ó¥³¡¼¥É¤·¤Ê¤¤
- case 'asis':
- case 'raw':
-// $param = htmlspecialchars($param);
- break;
-
- default:
- // ¥¨¥¤¥ê¥¢¥¹¤ÎÊÑ´¹
- if (array_key_exists($opt,$encode_aliases))
- {
- $opt = $encode_aliases[$opt];
- }
- // »ØÄꤵ¤ì¤¿Ê¸»ú¥³¡¼¥É¤Ø¥¨¥ó¥³¡¼¥É¤·¤ÆURL¥¨¥ó¥³¡¼¥É
- $param = rawurlencode(mb_convert_encoding($param,$opt,'auto'));
+ switch ($opt) {
+
+ case '':
+ case 'std': // ÆâÉôʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î¤Þ¤ÞURL¥¨¥ó¥³¡¼¥É
+ $param = rawurlencode($param);
+ break;
+
+ case 'asis':
+ case 'raw':
+ // $param = htmlspecialchars($param);
+ break;
+
+ case 'yw': // YukiWiki
+ if (! preg_match("/$WikiName/", $param))
+ $param = '[[' . mb_convert_encoding($param, 'SJIS', SOURCE_ENCODING) . ']]';
+ // $param = htmlspecialchars($param);
+ break;
+
+ case 'moin': // MoinMoin
+ $param = str_replace('%', '_', rawurlencode($param));
+ break;
+
+ default:
+ // ¥¨¥¤¥ê¥¢¥¹¤ÎÊÑ´¹
+ if (isset($encode_aliases[$opt])) $opt = $encode_aliases[$opt];
+ // »ØÄꤵ¤ì¤¿Ê¸»ú¥³¡¼¥É¤Ø¥¨¥ó¥³¡¼¥É¤·¤ÆURL¥¨¥ó¥³¡¼¥É
+ $param = rawurlencode(mb_convert_encoding($param, $opt, 'auto'));
}
// ¥Ñ¥é¥á¡¼¥¿¤òÃÖ´¹
- if (strpos($url,'$1') !== FALSE)
- {
- $url = str_replace('$1',$param,$url);
- }
- else
- {
+ if (strpos($url, '$1') !== FALSE) {
+ $url = str_replace('$1', $param, $url);
+ } else {
$url .= $param;
}