- 追加された行はこの色です。
- 削除された行はこの色です。
*日本語URIのencode,decode問題 [#v3c5d485]
-ページ: BugTrack
-投稿者: [[shin]]
-優先順位: 重要
-状態: 提案
-カテゴリー: その他
-投稿日: 2003-08-01 (金) 11:47:39
-バージョン: 1.35
#contents
**メッセージ [#n63f7f01]
書き込むときに日本語uri
http|https|file|ftp|...
をエンコードして表示するときにデコードする機能を切望します。
http://server/doc/ほげほげ仕様書.doc
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)
((?:https?|ftp|news)(?::\/\/[!~*'();\/?:\@&=+\$,%#\S.-]+)|file(?::\/\/.+)) (?#<4>:url)
(?(3)\s([^\]]+)\]) (?#<5>:alias, close bracket if <3>)
完了の仕方は分かりません。ですが結構有用なんで残しておきます。
**追記: [#v7921c78]
(v1.4.3)
make_link.php(322行)
(?:https?|ftp|news):\/\/[!~*'();\/?:\@&=+\$,%#\w.-]+|file(?::\/\/.*)
(?:https?|ftp|news):\/\/[!~*'();\/?:\@&=+\$,%#\w.-]+|file(?::\/\/.+)
にすればオケ!
**さらに追記 [#tb57f1eb]
PukiWiki 1.4.4 以降用&br;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 の下の行((Revision によっては、上の記述とは違う正規表現パターンのの場合もあります(mailto: が追加されているかどうか)))の末尾に
|file(?::\/\/.*)
|file(?::\/\/.+)
を追記すればいいハズ(mailto: が追加される前は下のパターンではなく、「[[追記:>#v7921c78]]」に書いてあるパターンになる)
(?:(?:https?|ftp|news):\/\/|mailto:)[\w\/\@\$()!?&%#:;.,~'=*+-]+|file(?::\/\/.*)
(?:(?:https?|ftp|news):\/\/|mailto:)[\w\/\@\$()!?&%#:;.,~'=*+-]+|file(?::\/\/.+)
----
**コメント [#d9c4eb6c]
-私個人の意見は、PukiWiki 本体で救うまでは、どうだろう?です。せいぜい、インラインプラグインで逃げる程度のものだと思います。-- [[upk]] &new{2003-08-02 (土) 19:58:49};
-ユーザのレベルが低いので、余計な書式を覚えさせるのに苦労があります。とりあえず解決しているので問題無しですが、純国産WikiClone PukiWikiならばと日本語対応強化対策として提案しておりました。 -- [[shin]] &new{2003-12-02 (火) 11:35:02};
-そのまま出すとRFC2396に違反します。かといって、URLエンコードしてしまうとIEでリンクが効かなくなる(("常にUTF-8としてURLを送信する"をOFFにするとうまくいくらしいけど…))ようですし。本体機能として取り込むのは無理かもしれません。 -- [[ぱんだ]] &new{2003-12-02 (火) 23:59:36};
-InterWikiを使えばいいのでは? -- [[reimy]] &new{2003-12-04 (木) 01:29:58};
--InterWikiNameでの定義
[http://server/doc/ doc]
--指定方法
[[doc:ほげほげ仕様書.doc]]
-修正個所が1.4.2に場合、どこを直せばいいのでしょう? -- [[guestA]] &new{2004-03-09 (火) 13:14:50};
-1.4.3の場合を足しておきました -- [[shin]] &new{2004-06-04 (金) 10:01:24};
- 修正個所が1.4.6に場合、どこを直せばいいのでしょう? -- [[guestA]] &new{2007-11-12 (月) 21:23:59};
- 1.4.4 から現時点での最新の[[CVS版]] ([[cvs:lib/make_link.php]] (1.37)) までの分を、上のものを参考にして書いてみました。 -- &new{2007-11-12 (月) 23:08:36};
- 1.4.7でさらに追記の方法をためしたのですが、fileだと希望のとおり日本語のファイル名までリンクが貼られるのですが、http や ftpがうまくいきません。やり方が悪いのでしょうか? -- [[parara]] &new{2007-11-16 (金) 03:27:24};
-- 今までに載ってた分も、file 限定のはずなんですが・・・。
(?:(?:https?|ftp|news|file):\/\/|mailto:).+(?!\s)
とすれば、http や ftp だけでなくnews でもmailto でもヒットするようになる・・・ハズ。 -- &new{2007-11-16 (金) 18:28:35};
#comment