*日本語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

を救ってあげたいのです。

>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>)

完了の仕方は分かりません。ですが結構有用なんで残しておきます。

**追記: [#v7921c78]
(v1.4.3)
make_link.php(322行)
 (?: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(?::\/\/.+)
を追記すればいいハズ(mailto: が追加される前は下のパターンではなく、「[[追記:>#v7921c78]]」に書いてあるパターンになる)
  (?:(?: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};
- できました。ありがとうございます。 -- [[parara]] &new{2007-11-16 (金) 23:17:10};
- This function should still allow the file:// prefix if this is to be used as a local wiki, also.  -- [[JordanC]] &new{2008-06-29 (日) 07:59:50};

- 関連: [[BugTrack2/334]] --  &new{2010-08-28 (土) 13:28:38};

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.012 sec.

SourceForge