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

使用两个反斜杠而不是一个:\\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

我只是想到了一个简单的解决方案,可以在从 SQL 加载 URL 值后“转义”它们。通过这种方式,我可以有选择地针对要转义的内容并保留正常的 http URL:

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 回答
0

mysql_real_escape_string()是你的解决方案。

echo mysql_real_escape_string("hello\world");

输出

hello\\world

因此,只需在将它们传递回客户端之前转义您的服务器值。

于 2011-09-20T16:15:24.917 回答