日本語URIのencode,decode問題 †
- ページ: BugTrack
- 投稿者: shin?
- 優先順位: 重要
- 状態: 提案
- カテゴリー: その他
- 投稿日: 2003-08-01 (金) 11:47:39
- バージョン: 1.35
メッセージ †
書き込むときに日本語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(?::\/\/.+)
コメント †
- 私個人の意見は、PukiWiki 本体で救うまでは、どうだろう?です。せいぜい、インラインプラグインで逃げる程度のものだと思います。-- upk
- ユーザのレベルが低いので、余計な書式を覚えさせるのに苦労があります。とりあえず解決しているので問題無しですが、純国産WikiClone PukiWikiならばと日本語対応強化対策として提案しておりました。 -- shin?
- そのまま出すとRFC2396に違反します。かといって、URLエンコードしてしまうとIEでリンクが効かなくなる*2ようですし。本体機能として取り込むのは無理かもしれません。 -- ぱんだ
- InterWikiを使えばいいのでは? -- reimy
- InterWikiNameでの定義
[http://server/doc/ doc]
- 指定方法
[[doc:ほげほげ仕様書.doc]]
- 修正個所が1.4.2に場合、どこを直せばいいのでしょう? -- guestA?
- 1.4.3の場合を足しておきました -- shin?
- 修正個所が1.4.6に場合、どこを直せばいいのでしょう? -- guestA?
- 1.4.4 から現時点での最新のCVS版 (cvs:lib/make_link.php (1.37)) までの分を、上のものを参考にして書いてみました。 --
- 1.4.7でさらに追記の方法をためしたのですが、fileだと希望のとおり日本語のファイル名までリンクが貼られるのですが、http や ftpがうまくいきません。やり方が悪いのでしょうか? -- parara?
- できました。ありがとうございます。 -- parara?
- This function should still allow the file:// prefix if this is to be used as a local wiki, also. -- JordanC
- 関連: BugTrack2/334 --
- BugTrack2/334は、ドメインに限った話なのであまり関係ないと思いますよ。 -- Logue
- 同じような成分を持っているし設計で2度手間するようなハメになるよりは~、って事じゃないですか?(悪用される可能性が~という話をこちらでは誰もしていませんし) --