0

SQLテーブルから構築された(当然のことながら)ハイパーリンクを含むページがありますが、一部のハイパーリンクは実際にはネットワークリソース(つまり、\ server \ path)です。それらについては、jQueryステートメントを設定してそれらを検索し、それらの<a href>タグをに置き換え<a onclick='window.prompt...>て、ネットワークの場所がプロンプトのテキストボックスに表示されるようにします。これにより、ユーザーはそれをコピーしてWindowsエクスプローラーに貼り付けることができます。問題は、すべての円記号が削除されていることです。通常、パスを手動で入力するのではなく、SQLテーブルから取得し、変数を使用してプロンプトに入力するダブルバックスラッシュでエスケープする必要があることを知っています。誰かが解決策があるかどうかわかりますか?

else if (($link.length > 0) && ($link.substring(0, 4) != "http")) {
  $('.linktext', $this.closest('tr')).after("<span><a href='#link' onclick='window.prompt(\"This resource is located on a network drive and is not accessible via the web browser. Please copy the link and paste into Windows Explorer.\",\""+$link+"\");'>Text</a></span>");
}

プロンプトは機能しますが、テキスト領域は次のようになります。\serverfolder1folder2file.ext

4

3 に答える 3

1

1つではなく2つの円記号を使用します\\server\\path

JavaScript文字列/正規表現内のバックスラッシュには、エスケープ文字であるという特別な意味があります。

var stringWithNewLine = "This
doesn't work"; //Error

var stringWithNewLine = "This\ndoes work"; //Escaped new-line feed.
于 2011-09-20T16:10:48.853 に答える
0

mysql_real_escape_string()あなたの解決策です。

echo mysql_real_escape_string("hello\world");

出力

hello\\world

したがって、サーバーの値をエスケープしてから、クライアントに返します。

于 2011-09-20T16:15:24.917 に答える
0

SQLからロードされた後にURL値を「エスケープ」できる簡単なソリューションを考えました。このようにして、エスケープするものを選択的にターゲットにして、通常のhttpURLをそのままにしておくことができます。

else if (($link.length > 0) && ($link.substring(0, 4) != "http")) {
            $linkescaped = $link.replace(/\\/g, "\\\\");
            $('.filter', $this.closest('tr')).after("<span><a href='#link' onclick='window.prompt(\"This resource is located on a network drive and is not accessible via the web browser. Please copy the link and paste into Windows Explorer.\",\""+$linkescaped+"\");'></a></span>");
        }
于 2011-09-21T13:23:40.083 に答える