Namazu-win32-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: シングルクォートを%27にreplaceするには



寺西です。

maruyama kenjiro wrote:
> 
> namazurcのreplaceでパス中のシングルクォートを
> %27に置換出来るでしょうか?

パスの中に1つシングルクォートが入っているのなら

Replace (.*?)'(.*) \1%27\2

パスの中に2つシングルクォートが入っているのなら

Replace (.*?)'(.*?)'(.*) \1%27\2%27\3

というように想定される数分 Replace を用意すれば、できなくもないと
思いますが、あまり現実的ではありません。
# Replace の用途とは異なりますし。

> どうせ限られたクライアントしか対象としないので
> 検索結果へのリンク(.xlsや.doc)はIEのなかで参照するのではなく
> ファイルに関連付けられたアプリケーション(wordやexcel)で開きたく思い
> uri変数の値をVBScriptに渡してWSHで関連付け実行を試みています。

普通にリンクするだけで出来ますが、それではダメなんでしょうか。

# IE の中ではなくて、別ウィンドウで開くのは設定でできたはず。

> 下記HTMLのonClickのところを試行錯誤しています。
> 【外側をシングルクォートで括ると】
> <a href = "vbscript:"
>  onclick = 'vbscript:wsh.Run(chr(34)+"${uri}"+chr(34))'>
> このとき${uri}にシングルクオートが含まれていると
> onclickの値の部分が途中で途切れてしまいます。

Namazu では ${uri} を Replace 以外で書き換える機能を今のところ用意
していないので、パスを加工するなら Namazu を改造しないと無理でしょう。

ところで、結局のところ、これは

<a href="#" onclick='vbscript:wsh.Run("xxxxxx")'>

で、xxxxx の中に空白, シングルクォート が入る可能性があるという
ことですね。(ダブルクォートはないわけですよね?)

# ファイルネームを変えるわけにはいかないのでしょうか。

wsh は使っていないので、よく分かりませんが、そもそも、
xxxx のシングルクォートを %27 に置き換えた場合、例えば

<a href="#" onclick='vbscript:wsh.Run("c:\test%27.doc")'>

では、c:\test'.doc を開くことができるのでしょうか?
開くことができるとしても、その場合はパス名に % が含まれる場合には
対応できないのではないでしょうか?
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E