【发布时间】:2010-12-14 20:31:56
【问题描述】:
这一直在发疯,但我似乎找不到答案。我们运行一个技术知识库,其中有时会包含用于映射到网络驱动器的 Windows samba 路径。
例如:\\servername\sharename
当我们包含有两个反斜杠的路径时,它们在运行“addslashes”时无法正确转义。我的预期结果是“\\\\servername\\sharename”,但它返回“\\servername\\sharename”。显然,稍后运行“stripslashes”时,双反斜杠前缀只是一个斜杠。我也尝试过使用str_replace("\\", "\", $variable);,但是当我期望"\\servername\sharename"时它返回"\servername\sharename"。
因此,对于添加斜杠,它会忽略第一组双反斜杠,而对于 str_replace,它会将双反斜杠更改为单个编码的反斜杠。
我们需要运行addslashes 和stripslashes 来插入数据库;在我们的特定情况下,使用 pg_escape_string 将不起作用。
这是在 Apache 上的 PHP 5.3.1 上运行的。
编辑:示例代码$variable = 'In the box labeled Folder type: \\servername\sharename';echo addslashes($variable);
这将返回:In the box labeled Folder type: \\servername\\sharename
编辑:示例代码 #2$variable = 'In the box labeled Folder type: \\servername\sharename';echo str_replace('\\', '\', $variable);
这将返回:In the box labeled Folder type: \servername\sharename
我还想声明,使用单引号或双引号不会给我带来不同的结果(如您所料)。使用其中一个或两个都可以得到相同的确切结果。
有人对我能做什么有什么建议吗?
【问题讨论】:
-
我只是在一个包含两个反斜杠的字符串上运行 addlashes 并得到四个反斜杠作为回报。我想需要一些代码示例。
-
为什么 pg_escape_string 在你的情况下不起作用?
-
第二个代码示例。不过,我想这将成为字符串处理 '' (无转义)和 "" (转义)之间的区别。
标签: php addslashes