这一直在疯狂,但我似乎无法找到答案。我们运行一个技术知识库,其中有时会包含用于映射到网络驱动器的 Windows samba 路径。
例如:\\servername\sharename
当我们包含有两个反斜杠的路径时,它们在运行“addslashes”时不会正确转义。我的预期结果是“ \\\\servername\\sharename
”,但它返回“ \\servername\\sharename
”。显然,稍后运行“stripslashes”时,双反斜杠前缀只是一个斜杠。我也尝试过使用 astr_replace("\\", "\", $variable);
但是它"\servername\sharename"
会在我期望的时候返回"\\servername\sharename"
。
因此,使用addslashes,它会忽略第一组双反斜杠,而使用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
我还想声明,使用单引号或双引号不会给我不同的结果(如您所料)。使用其中一个或两个都给我相同的确切结果。
有人对我能做什么有任何建议吗?