使い回せそうなパターン、本体/Error.cssのカスタマイズなど(裏技、便利技、知識)

ソース画面の変更 Edit

CSSを書き換える Edit

http://Local.ptron/ViewSrc.css = ./html/ViewSrc.css

横スクロールバーを出さない Edit

http://pc5.2ch.net/test/read.cgi/win/1084124599/870-871

870 :名無し~3.EXE :sage :04/07/23 10:06 ID:LypusYek
HTML Debug Infoでデバグ情報を表示した時に、
CSSを利用して横スクロールバーを出さない方法

いずれもViewSrc.cssのbody{ }内に挿入
・IEの場合
line-break:normal;
word-break:break-all;
word-wrap:break-word;
・Mozilla
white-space:-moz-pre-wrap;
・Opera
white-space:-pre-wrap;


871 :名無し~3.EXE :sage :04/07/23 10:09 ID:LypusYek
失礼、pre{ }内

ホストエラー画面の変更 Edit

CSSを書き換える Edit

http://Local.ptron/Errors.css = ./html/Errors.css

http://pc2.2ch.net/test/read.cgi/win/1054480719/18

18 :名無し~3.EXE :03/06/02 18:09 ID:HK6ulLxC
あのホストエラー画面とやっとおさらば出来る・・・
ついでにgoogleキャッシュとWebarchiveへのリンクをつけるスタイルシート。(IE5.5?〜)
キャプチャ http://www2.wbs.ne.jp/~go-to/prx/Errors.png
Errors.css http://www2.wbs.ne.jp/~go-to/prx/Errors.txt

ttp://web.archive.org/web/20031127230252/www2.wbs.ne.jp/~go-to/prx/Errors.png
http://web.archive.org/web/20031127230252/www2.wbs.ne.jp/~go-to/prx/Errors.txt

上記内容をちょっといじったもの

/* Proxomitron Error Message Style Sheet */

/*
IE5~7の場合、Proxomitron の ./html/image/ に置いた bg0.jpg ~ bg9.jpg のどれかがランダムで適用される
 */

body {
	background-image: url(http://local.ptron/image/bg0.jpg);
}
td {
	font-size: 21pt;
	color: #eee;
	font-family: "Times New Roman", "游明朝", YuMincho,"ヒラギノ明朝 Pr6 W6","Hiragino Mincho Pro", "HGS明朝E","メイリオ", "MS P明朝","MS PMincho",Meiryo, serif;

	background-color: #000;
	filter: Alpha(opacity=70);
	-moz-opacity: 0.7;
	opacity: 0.7;
}
.err1 {
	font-size:110%;
	font-weight:bold;
}
.err2 {
	text-decoration:underline;
	/* IE5-7 */
	display:expression(
		!window.a &&
		(
			this.innerHTML
				= this.innerHTML.link("http://web.archive.org/*/"+document.URL)
				+ " "
				+ "G".link("http://www.google.co.jp/search?q=cache:"+document.URL)
				+ " "
				+ "魚".link("http://megalodon.jp/?url="+encodeURIComponent(document.URL))
				,
			this.children[0].target="_self",
			this.children[1].target="_self",
			this.children[2].target="_self",
			this.children[0].title="Internet Archive",
			this.children[1].title="Google cache",
			this.children[2].title="ウェブ魚拓",

			document.body.style.backgroundImage = "url('http://local.ptron/image/bg"
			+ (
				// 0-9
				Math.floor(Math.random()*10)
			)
			+ ".jpg')"
		),
		a = "inline"
	);
}
a { color: #aaf }
a:hover, a:focus, a:active { color: #faa }
table { width: 100% }
img { display: none }

本体を書き換える Edit

http://pc2.2ch.net/test/read.cgi/win/1047857088/220

220 :196 :sage :03/04/03 09:31 ID:wBezrTX+
>>196

バイナリエディタ(Stirling等)で直接行う方法として、
00030F3B -> 00030F74 番地を以下に書き換える。

<body text=#00ff00 bgcolor=#330044 background="Gradient.gif">
↓
<frameset rows="*"><frame src="hostingerror.html"></frameset>

(htmlフォルダ内にhostingerror.htmlを作成)

4.5+7の場合は 0002A0D9 -> 0x0002A111 番地を以下に書き換える。

<LINK REL="stylesheet" type="text/css" href="Errors.css">
↓
<frameset rows="*"><frame src="dnserror.html"></frameset>

(htmlフォルダ内にdnserror.htmlを作成)

接続切断画面の変更 Edit

./html/killed.html (画像以外) Edit

WayBack Machine、GoogleCache、ウェブ魚拓、Torゲートウェイなどへのリンクを表示 Edit

<html><head><title>Connection Killed! by Proxomitron</title></head><body style="background-color:rgba(0,0,0,0.1);color:black">\k
<script type="text/javascript">
if (/^https?:/i.test(location.protocol) && !/^(0*1(?:0|27)\.\d+\.\d+\.\d+|0*1(?:69\.254|92\.168)\.\d+\.\d+|localhost)$/.test(location.hostname)) {
	if (/\.onion$/i.exec(location.hostname))
		document.write(
		'<a target="_blank" href="'+location.protocol+'//'+location.hostname+'.city'+location.pathname+location.search+location.hash+ '">onion.city</a>'
		+ ' - <a target="_blank" href="'+location.protocol+'//'+location.hostname+'.cab'+location.pathname+location.search+location.hash+ '">onion.cab</a>'
		+ ' - <a target="_blank" href="'+location.protocol+'//'+location.hostname+'.to'+location.pathname+location.search+location.hash+ '">onion.to</a>'
		);
	else
		document.write('<a target="_blank" href="http://web.archive.org/*/' +location+ '">WayBack Machine</a>'
		+ ' - <a target="_blank" href="http://www.google.co.jp/search?q=cache:' +encodeURIComponent((''+location).match(/^[^#]+/))+location.hash+ '">Google cache</a>'
		//+ ' - <a target="_blank" href="http://' +location.hostname+'.nyud.net'+location.port+location.pathname+location.search+location.hash+ '">Coral CDN</a>'
		+ ' - <a target="_blank" href="http://megalodon.jp/?url=' +encodeURIComponent((''+location).match(/^[^#]+/))+location.hash+ '">&#x30a6;&#x30a7;&#x30d6;&#x9b5a;&#x62d3;</a>'
		// ヒット率が高くなるが関係ないページも表示されやすい版
		+ ' - <a target="_blank" href="https://archive.is/' +(''+location).match(/^[^#]+/)+ '*" title="&#8251;&#x300c;#&#x300d;&#x3092;&#x542b;&#x3080;URL&#x3068;&#x542b;&#x307e;&#x306a;&#x3044;URL&#x306f;&#x5225;&#x7269;&#x3068;&#x8a8d;&#x8b58;&#x3055;&#x308c;&#x308b;&#x306e;&#x3067;&#x3001;&#x691c;&#x7d22;&#x6642;&#x306f;&#x6700;&#x5f8c;&#x306b;&#x300c;*&#x300d;&#x3092;&#x4ed8;&#x3051;&#x308b;&#x3053;&#x3068;&#x3092;&#x63a8;&#x5968;">archive.is</a>'
		// ヒット率が低くなるが関係ないページは表示されにくい版
		//+ ' - <a target="_blank" href="https://archive.is/' +(''+location).replace(/#.*$/, '*')+ '" title="&#8251;&#x300c;#&#x300d;&#x3092;&#x542b;&#x3080;URL&#x3068;&#x542b;&#x307e;&#x306a;&#x3044;URL&#x306f;&#x5225;&#x7269;&#x3068;&#x8a8d;&#x8b58;&#x3055;&#x308c;&#x308b;&#x306e;&#x3067;&#x3001;&#x691c;&#x7d22;&#x6642;&#x306f;&#x6700;&#x5f8c;&#x306b;&#x300c;*&#x300d;&#x3092;&#x4ed8;&#x3051;&#x308b;&#x3053;&#x3068;&#x3092;&#x63a8;&#x5968;">archive.is</a>'
		+ ' - <a target="_blank" href="http://www.freezepage.com/">freezepage.com</a>'
		);
}
</script></body></html>

Gallery/KillConnectionList のようなフィルタで、キーボードのKとLを押しながらアクセスすると切断するようにしておくと便利
※漏れて困るURLの場合リンクを開かないこと

./html/killed.gif (画像) Edit

フィルタ名に日本語を使えるようにする (Naoko-4.5 June) Edit

フィルタ名に日本語.png

http://pc12.2ch.net/test/read.cgi/win/1218905098/169-176

169 : 名無し~3.EXE : sage : 2009/04/11(土) 17:29:01 ID:s7+pSGN7
フィルタ名に日本語使えるようにしたのって既出だった?
ttp://toku.xdisc.net/cgi/up/ttt/nm12578.png

176 : 169 : sage : 2009/04/12(日) 00:27:41 ID:e5d0AyBv
興味ある方はどうぞ

CreateFont CharSet
0000676D: 00 -> 01
0000B913: 00 -> 01
0000B93F: 00 -> 01
00011FC9: 00 -> 01
00018743: 00 -> 01
0001876F: 00 -> 01

CreateFont Height
00006780: F8 -> F4
0000B92C: F8 -> F4
0000B952: F8 -> F4
00011FE9: F8 -> F4
0001875C: F8 -> F4
00018782: F8 -> F4

フィルタ名の最初の文字が化ける対策(何か弊害あるかも)
0000B38A: 3C 20 7F 08 8A 41 01 41 84 C0 75 F4 -> 90 90 90 90 90 90 90 90 90 90 90 90

00027805: MS UI Gothicとかに

以上の変更をまとめた FireFlower 形式のパッチを用意しました。Naoko-4.5 June 用です。

fileフィルタ名に日本語を使えるようにする FireFlower 形式のパッチ.pat

ByteLimitを解除する Edit

http://prxbx.com/forums/showthread.php?tid=1115
リンク先にパッチファイルあり ※この変更を行ったことによる弊害は未確認

多重起動を可能にする Edit

/質問箱/16

タスクトレイアイコン右クリックでのウザイ現象を直す Edit

※4.5June+7は既に適用されている

http://pc8.2ch.net/test/read.cgi/win/1145863257/903,938

903 :名無し~3.EXE :sage :2006/12/11(月) 10:55:51 ID:xwLq9Wus
proxomitronのタスクトレイアイコン上で右クリックしてコンテキストメニューを出す際、エクスプローラのタスクバーのメニューも一緒に出るよな?

必ずそうなるわけじゃなくて、いくつか条件があるんだけどな
(1)タスクトレイにフォーカスが無い
(2)右クリックを押してから離すまでの時間を素早くやる

これは右クリックを*押した*時にメニューが出るプログラムだと、右クリックを*離した*時にエクスプローラのメニューが出る為らしい
ttp://forums.belution.com/ja/vc/000/320/07s.shtml

WM_RBUTTONDOWN 0x0204
WM_RBUTTONUP    0x0205

つうことで、右クリックを*離した*時にメニューが出るようにパッチ当てようとしたんだが、バイナリエディタで検索かけてもそれらしき場所が見つかんねぇ
誰か、解析してパッチを当てる場所を教えれ


938 :名無し~3.EXE :sage :2006/12/25(月) 11:46:18 ID:PMteNb4u
需要あるか分からんけどせっかくだから書いとくか

通知領域のアイコンの右クリックメニューを、マウス右ボタンを押したときじゃなくて
離したときに表示させてみるテスト for 4.5June系

00013397: 03 04
4.300011607: 03 04
4.4000116B7: 03 04
4.5may00013327: 03 04

理解出来ない Content-Encoding: (in) で強制バイパスになるのを回避する Edit

[HTTP headers]
In = TRUE
Out = FALSE
Key = "Content-Encoding: Kill incorrect Encoding (In) [2007/08/08] test1a"
Match = "(^*(gzip|deflate))"

検証:http://prx.dip.jp/test/filtertest/nph-test.cgi

local.ptron で参照できるローカルのファイルを更新しても、ブラウザのキャッシュを見てしまうバグ対策 Edit

※4.5June+8は修正されている
ただし、FAT ファイルシステム上のファイルは逆にずれるようになる(未確認)らしい

If-Modified-Sinceを見てない?(未検証)ため発生するバグ
(他にも、Last-Modified: が GMTから9時間引いた時間 = JSTから18時間引いた時間になっているというバグがある ※GMT=JSTから9時間引いた時間)

対策

  1. バイパスリストの local.ptron/ をコメントアウトする
  2. 以下のフィルタをぶち込む
    [HTTP headers]
    In = TRUE
    Out = TRUE
    Key = "Pragma: local.ptron bug fix  no-cache (both)"
    URL = "local.ptron/$FILTER(false)"
    Replace = "no-cache"
    file// でも発生する様子

JavaScriptでProxomitronを検出する方法と対策 Edit

http://shinshu.fm/MHz/14.30/archives/0000167355.html

http://local.ptron/killed.gif が読み込めればオミトロンが起動していると見なす と言うもの。
これを利用してアクセスを拒否してくるサイトが出てくるかも知れない。(関連:スラッシュドット ジャパン | Firefoxユーザをブロックするキャンペーン

対策 案1
バイパスリストの
local.ptron/
の前の行に
local.ptron/killed.gif $JUMP(http://local.ptron/a.gif)
を追記する。
killed.gif は RDIR でしか見ない筈なのでOK
a.gif は好きなものに変えていいが、存在しないファイルにすること。
対策 案2
バイナリエディタで本体の local.ptron を全て適当な物に書き換え、全フィルタ、全リスト、オミトロンがあるフォルダ/html/以下の全ファイルの local.ptron も同じ物に書き換える。

案1の方が簡単だが、案2の方が確実

POSTデータを書き換える Edit

Apache(自鯖*1) & モジュール版PHP & Proxomitron & POSTデータを書き換えるPHPスクリプト でPOSTデータを書き換える Edit

  1. Proxomitron で $RDIR(POSTデータを書き換えるPHPスクリプト)
    1. 更に「x-honurl: 本来のURL」の様な特別なヘッダにURLをセットして送信
  2. POSTデータを書き換えるPHPスクリプト が fsock で x-honurl: のURLを取得
    1. リクエストヘッダは "$_SERVER{'REQUEST_METHOD'} $_SERVER{'REQUEST_URI'} $_SERVER{'SERVER_PROTOCOL'}" と apache_request_headers() で取得可能
    2. 送信するPOSTの生データは $stdin = fopen('php://input', 'r'); で取得可能
    3. 後は好きなように書き換えて、fsock で送信、返って来たデータを header() と echo で出力して Proxomitron に渡すだけ

但し、$RDIRを使っているので、レスポンスヘッダを見て更に$RDIRを使うことはできない

変更前の元々のヘッダを保存、参照する Edit

ProxomitronはHTTP-Headerの処理順が決まっていないので*2、以下の様な事が起こる。

パターンA) 元々の Referer: は A → Referer: が A なので グローバル変数を設定とか、何か処理 → Referer: を B に書き換え
パターンB) 元々の Referer: は A → Referer: を B に書き換え → Referer: が B なので 何もしない

どっちでも元々のRefererは同じなので、同じ動作をしないとまずい。

元々のヘッダを4.5以降のグローバル変数に保存しておく Edit

Refererの場合、Referer: フィルタ全ての、マッチ部分の頭に、

($TST(default_referer=?)|($OHDR(referer: \0)&$SET(default_referer=\0)))

を置く。 ※この部分は必ずマッチする

後は、元々のRefererを参照したい場合は、$OHDR(referer:) や、Referer: ヘッダフィルタではなく、$TST(default_referer=...) か、$GET(default_referer) を使えば良い。

Webページフィルタでは参照できないContent-Encoding(in)ヘッダをWebページフィルタで参照する方法 Edit

  1. 以下のフィルタを導入する ※この方法はグローバル変数を使うので、4.5以降でのみ有効
    [HTTP headers]
    In = TRUE
    Out = FALSE
    Key = "Content-Encoding: backup (in)"
    Match = "?&\0"
    Replace = "\0$SET(Content_Encoding=\0)"
  2. $IHDR(content-encoding:〜)

    $TST(content_encoding=〜)
    に書き換える

既に Set-Cookie: がある通信に、別の Set-Cookie: を足す方法 Edit

既に「Set-Cookie: key=value; domain=hoge.com; expires=~;」などがある通信で、path や domain, expires, secure が違う Set-Cookie: を吐き出そうとすると、別に Set-Cookie: ヘッダを出力する必要が出てくる。
これは、以下のような方法で実現できる。

[HTTP headers]
In = TRUE
Out = FALSE
Key = "Set-Cookie: TEST: add new Set-Cookie: (in)"
Match = "(?$SET(1=\r\nSet-Cookie: )&\0)|"
Replace = "\0\1proxo_new_key=proxo_new_value"

※HTTPヘッダはの区切りは \r\n HTTPヘッダとHTTPボディの区切りは \r\n\r\n

LogWindow では、新しく追加した Set-Cookie: が、元々あった Set-Cookie: の後ろにくっついて表示される(改行が無視されて表示される)が、実際の通信では正常に改行も出力されていて、ブラウザも正しく処理する。
検証: http://prx.dip.jp/test/filtertest/nph-test.cgi

Replaceに4096Byte以上いれる方法 Edit

Match の方で $SET(0=出力)$SET(1=したい) のようにして、Replace を \0\1コメント のようにすればおk
他に $FILE を使う方法もある

文字コードなど Edit

文字コード表
http://euc.jp/i18n/charcode.ja.html

Shift_JIS/EUC-JP/JIS/UTF-8 どの文字コードのページでもProxomitronなどでマルチバイト文字を挿入する Edit

文字列 → 数値文字参照 ※IEの場合こっち推奨
を使用すれば一応可能(HTMLとして表示した場合限定)

但し、UTF-7(Base64でエンコードされている)やUTF-16,UTF-32(ASCIIに0x00を含む)では使えない

コメントを挿入する Edit

Perlの正規表現で言う「(?#comment)」のような物は無いが、
検索表現に「((^(^?))|(^?)|comment)」としてコメントを書く事は可能。
※「(^(^?))」の部分が、後ろに何か文字がある場合に消費せずにマッチし、「(^?)」の部分が、後ろに何の文字もない場合に消費せずにマッチするので、「comment」の部分は絶対検索されない

また、少々鬱陶しいが、 $LOG(comment) としてコメントを書く事も可能
<start>または<end>が有効である場合は、そのフィルタにおけるBoundsは無視されるので、Boundsにコメントを書くことも可能

但し、どれも Syntax Error が出ないようにしないといけない

2024/5/5 追記(posted by oramu)

(something|)を応用して (|comment) という形でもコメントアウトできる

このとき万が一にもコメント部分がマッチしてしまわないように、通常ではマッチしえない文字列をコメントの前に入れておくとよい

投稿者(oramu)は (|# comment) のように簡略にしているが、今のところ誤マッチはない

ただし 上記にあるようにコメント内容もマッチングテキストとして評価されるので、パーレンの閉じ忘れなどの Syntax Error が出ないように書く必要がある

使い回せそうなパターン Edit

プライベートIPアドレス(ローカルIPアドレス) Edit

## プライベートIPアドレス(ローカルIPアドレス)
0+10.[0-9]+.[0-9]+.[0-9]+[:/]
0+172.0+(1[6-9]|2[0-9]|3[01]).[0-9]+.[0-9]+[:/]
0+192.0+168.[0-9]+.[0-9]+[:/]
## リンクローカルアドレス
0+169.0+254.[0-9]+.[0-9]+[:/]
## ローカルループバックアドレス
0+127.[0-9]+.[0-9]+.[0-9]+[:/]
localhost[:/]
## ※変なアドレスも使える http://prx.dip.jp/wiki/%E8%B3%AA%E5%95%8F/%E7%B9%8B%E3%81%8C%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%83%86%E3%82%B9%E3%83%88/

GoogleCache の URL Edit

URL Match の頭に置くと、GoogleCache でもマッチするようになる。/Gallery/CacheSiteList

##↓リスト形式
# GoogleCache
(
  ([^/]++.|)google.co(m|.jp)
  |
  [0-9]+.[0-9]+.[0-9]+.[0-9]+
 )/search\?(q|[^#]++\&q)=cache(:|%3A)
  ((^http)[^:]+:|)
  (http(s|)(:|%3A)(/|%2F)+|)

title.ext [2010-03-14更新] Edit

概要

<a href="hoge.php?id=aaa">ペポ|+ %bbb</a>
  何てのを
<a href="http://title.ext/ペポ&#xFF5C;+ %25bbb.txt?hoge.php?id=aaa">ペポ|+ %bbb</a>
  というリンクに書き換える。

その後、http://title.ext/~ へのアクセスをヘッダフィルタで本来のURLに$RDIRで透過的に移動させる。
= Windowsで保存すると、「ペポ|+ %bbb.txt」になる。(駄目文字を全角文字に置き換えている)

ダウンロードリンク追加系のフィルタで使えるはず。

使用例は「title.ext」で検索

導入

  1. title.ext フィルタを導入
  2. 以下のフィルタを元に適当に改造する
    (上記ヘッダフィルタを改造せずに使う場合は、replaceの「\@.txt?\0」を「\@.txt?http://host/\0」のようなプロトコル部分から始まる完全なものにする必要があります。base hrefを使われている可能性も考慮する必要あり)
    [Patterns]
    Name = "title.ext  for JIS [2010-03-14]"
    Match = "<a\s[^>]++href=$AV(\0)[^>]+>(^(^\1</a>))"
            "("
            "(([^#%\\/:*?"<>| &%1B]+((^\&quot;+|\&[lg]t;+)\&|[%1B]([%24][%40%42]|[%26][%40]|[%28][%49%4A])[^%1B]+|[%1B][%28][%42]|))+)\#"
            ""
            "(#$SET(#=%23)"
            "|%$SET(#=%25)"
            "|\\$SET(#=&#xFFE5;)"
            "|/$SET(#=&#xFF0F;)"
            "|:$SET(#=&#xFF1A;)"
            "|\*$SET(#=&#xFF0A;)"
            "|\?$SET(#=&#xFF1F;)"
            "|\"$SET(#=&#x201D;)"
            "|\&quot(;|)$SET(#=&#x201D;)"
            "|(^</a>)<$SET(#=&#xFF1C;)"
            "|\&lt(;|)$SET(#=&#xFF1C;)"
            "|>$SET(#=&#xFF1E;)"
            "|\&gt(;|)$SET(#=&#xFF1E;)"
            "|\|$SET(#=&#xFF5C;)"
            "|\s$SET(#= )"
            "|)"
            ""
            ")+</a>"
    Replace = "<a href="http://title.ext/\@.txt?\0">\1</a>"
    
    
    Name = "title.ext  for Shift_JIS [2010-03-14]"
    Match = "<a\s[^>]++href=$AV(\0)[^>]+>(^(^\1</a>))"
            "("
            "(([^#%\\/:*?"<>| &%81-%9F%E0-%EF]+((^\&quot;+|\&[lg]t;+)\&|[%81-%9F%E0-%EF][%40-%FC]|))+)\#"
            ""
            "(#$SET(#=%23)"
            "|%$SET(#=%25)"
            "|\\$SET(#=&#xFFE5;)"
            "|/$SET(#=&#xFF0F;)"
            "|:$SET(#=&#xFF1A;)"
            "|\*$SET(#=&#xFF0A;)"
            "|\?$SET(#=&#xFF1F;)"
            "|\"$SET(#=&#x201D;)"
            "|\&quot(;|)$SET(#=&#x201D;)"
            "|(^</a>)<$SET(#=&#xFF1C;)"
            "|\&lt(;|)$SET(#=&#xFF1C;)"
            "|>$SET(#=&#xFF1E;)"
            "|\&gt(;|)$SET(#=&#xFF1E;)"
            "|\|$SET(#=&#xFF5C;)"
            "|\s$SET(#= )"
            "|)"
            ""
            ")+</a>"
    Replace = "<a href="http://title.ext/\@.txt?\0">\1</a>"
    
    
    Name = "title.ext  for EUC-JP, UTF-8 [2009-05-03]"
    Match = "<a\s[^>]++href=$AV(\0)[^>]+>(^(^\1</a>))"
            "("
            "(([^#%\\/:*?"<>| &]+((^\&quot;+|\&[lg]t;+)\&|))+)\#"
            ""
            "(#$SET(#=%23)"
            "|%$SET(#=%25)"
            "|\\$SET(#=&#xFFE5;)"
            "|/$SET(#=&#xFF0F;)"
            "|:$SET(#=&#xFF1A;)"
            "|\*$SET(#=&#xFF0A;)"
            "|\?$SET(#=&#xFF1F;)"
            "|\"$SET(#=&#x201D;)"
            "|\&quot(;|)$SET(#=&#x201D;)"
            "|(^</a>)<$SET(#=&#xFF1C;)"
            "|\&lt(;|)$SET(#=&#xFF1C;)"
            "|>$SET(#=&#xFF1E;)"
            "|\&gt(;|)$SET(#=&#xFF1E;)"
            "|\|$SET(#=&#xFF5C;)"
            "|\s$SET(#= )"
            "|)"
            ""
            ")+</a>"
    Replace = "<a href="http://title.ext/\@.txt?\0">\1</a>"
    上のフィルタのリスト版

テスト用ファイル filetitle.ext-jis.htm filetitle.ext-sjis.htm filetitle.ext-eucjp.htmfiletitle.ext-utf8.htm

問題点

NTFSで利用できない文字
\/:*?"<>|

NTFSの文字数制限
「名前.拡張子」全部含めて、UNICODEで255文字まで(UTF-16LEらしい)


FAT16, VFAT, FAT32 で利用できない文字(らしい)
. " / \ [ ] : ; | = ,
http://ja.wikipedia.org/wiki/File_Allocation_Table には特に何も書いていない

FAT12, FAT16, VFAT, FAT32 の文字数制限
8.3形式、または255文字

HTMLタグの属性値を囲む文字は "'` (0x22 0x27 0x60) のどれか Edit

※` はInternetExplorerのみ
Shift_JISの文字が 0x81〜9F + 0x40〜FC   0xA0〜DF(半角カナ)   0xE0〜EF + 0x40〜FC なので、
` (0x60)が、Shift_JISの2Byte目に含まれる可能性がある。
 例:? (0x8760) 他にも、Aチ汁柿港形 など
これはちょっとした問題を起こす。

例えば、IMGタグからALT属性値を抜き出す場合、
 Match = "<img [^>]++alt=(\"\1\"|'\1'|`\1`)*>"
の様にすると思われるが、  ※$AV, $AVQは ` に対応していない上にエスケープされている場合閉じ文字として処理されない=スクリプト用
 <img alt=`イ? と書いてある看板` src="hogehoge">
を処理した場合、
 \1 = イ?
となってしまう。
理由は勿論?の2Byte目を閉じる文字として処理した為。

この様な誤爆を回避する場合、
 Match = "<img [^>]++alt=(\"\1\"|'\1'|`(([%81-%9F%E0-%EF]`|[^`])+)\1`)*>"
の様にすると良い。

文字実体参照(実体参照)は最後の「;」が無くても有効 Edit

file文字実体参照(実体参照)は最後の「;」が無くても有効.htm
IE9, IE8, Firefox, Chrome, Opera で確認

サクラエディタ用ファイル Edit

導入方法は、各ファイルをエディタで開いて確認してください。

色づけ (*.col, *.rkw)、省入力 (*.kwd)、ポップアップヘルプ (*.khp)、アウトライン表示 (*.rl) が可能になる。
fileSakuraEditor_Proxomitron.zip

SakuraEditor_Proxomitron.gif
マクロ
file選択中の文字を [%HH] に変換.jsfileecl_new.jsも必要)
選択中の文字を [%HH] に変換.gif

file選択中の [%HH] と %HH をデコード.jsfileecl_new.jsも必要)
選択中の [%HH] と %HH をデコード.gif

*1 IPが同じになるように
*2 同じ順になることもあるが、フィルタをリロードしたり、追加・削除したりすると変わる様子

添付ファイル: fileフィルタ名に日本語を使えるようにする FireFlower 形式のパッチ.pat 297件 [詳細] fileフィルタ名に日本語.png 209件 [詳細] file選択中の文字を [%HH] に変換.gif 156件 [詳細] filetitle.ext-sjis.htm 363件 [詳細] file選択中の [%HH] と %HH をデコード.gif 179件 [詳細] file選択中の文字を [%HH] に変換.js 277件 [詳細] fileSakuraEditor_Proxomitron.gif 277件 [詳細] fileSakuraEditor_Proxomitron.zip 470件 [詳細] filetitle.ext-eucjp.htm 471件 [詳細] file文字実体参照(実体参照)は最後の「;」が無くても有効.htm 445件 [詳細] file選択中の [%HH] と %HH をデコード.js 264件 [詳細] filetitle.ext-jis.htm 521件 [詳細] filetitle.ext-utf8.htm 514件 [詳細] fileErrors.css 349件 [詳細]

複製名前変更