書き込むときに日本語uri http|https|file|ftp|... をエンコードして表示するときにデコードする機能を切望します。
http://server/doc/ほげほげ仕様書.doc
を救ってあげたいのです。
init.phpの
(\[)? (?#<3>:open bracket) ((?:https?|ftp|news|file)(?::\/\/[!~*'();\/?:\@&=+\$,%#\w.-]+)) (?#<4>:url) (?(3)\s([^\]]+)\]) (?#<5>:alias, close bracket if <3>)を修正すればいけるかなと思って試したのですが駄目でした。phpは不慣れなんでよく分かってないのですが...
解決!
(\[)? (?#<3>:open bracket) ((?:https?|ftp|news)(?::\/\/[!~*'();\/?:\@&=+\$,%#\S.-]+)|file(?::\/\/.+)) (?#<4>:url) (?(3)\s([^\]]+)\]) (?#<5>:alias, close bracket if <3>)
完了の仕方は分かりません。ですが結構有用なんで残しておきます。
(v1.4.3) make_link.php(322行)
(?:https?|ftp|news):\/\/[!~*'();\/?:\@&=+\$,%#\w.-]+|file(?::\/\/.+)
にすればオケ!
PukiWiki 1.4.4 以降用
lib/make_link.php で以下の部分を探す('class Link_url' で検索する)
class Link_url extends Link { function Link_url($start) { parent::Link($start); } function get_pattern() { $s1 = $this->start + 1; return <<<EOD (\[\[ # (1) open bracket ((?:(?!\]\]).)+) # (2) alias (?:>|:) )? ( # (3) url (?:(?:https?|ftp|news):\/\/|mailto:)[\w\/\@\$()!?&%#:;.,~'=*+-]+ ) (?($s1)\]\]) # close bracket EOD; }
# (3) url の下の行*1の末尾に
|file(?::\/\/.+)
を追記すればいいハズ(mailto: が追加される前は下のパターンではなく、「追記:」に書いてあるパターンになる)
(?:(?:https?|ftp|news):\/\/|mailto:)[\w\/\@\$()!?&%#:;.,~'=*+-]+|file(?::\/\/.+)
[http://server/doc/ doc]
[[doc:ほげほげ仕様書.doc]]
(?:(?:https?|ftp|news|file):\/\/|mailto:).+(?!\s)とすれば、http や ftp だけでなくnews でもmailto でもヒットするようになる・・・ハズ。 -- 2007-11-16 (金) 18:28:35