这一直是疯狂的,但我似乎无法找到答案。我们运行的技术知识库有时会包含用于映射到网络驱动器的Windows samba路径。PHP'addslashes'不像预期的那样行事
例如:\\servername\sharename
当我们包括具有两个连续的反斜杠对方的路径,它们运行不正常“和addslashes”时逃脱。我的预期结果将是“\\\\servername\\sharename
”,但它返回“\\servername\\sharename
”。显然,稍后在运行'stripslashes'时,双反斜线前缀只是一个斜线。我也尝试使用str_replace("\\", "\", $variable);
,但是当我期望"\\servername\sharename"
时,它返回"\servername\sharename"
。
因此,使用addslashes时,它会忽略第一组双反斜杠,并使用str_replace将双反斜杠更改为单个编码的反斜杠。
我们需要为数据库插入运行addslashes和stripslashes;使用pg_escape_string在我们的特定情况下不起作用。
这是运行在Apache 5.3.1上的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
我还喜欢声明使用单引号或双引号不会给我不同的结果(如您所期望的)。使用其中之一或两者给我相同的确切结果。
有没有人对我可能做什么有什么建议?
我只是在包含两个反斜杠的字符串上运行addslashes,并得到四个反斜杠。我想一些代码示例是需要的。 – StasM 2010-12-14 20:35:36
为什么不会pg_escape_string在你的情况下工作? – babonk 2010-12-14 20:40:56
借调代码示例。不过,我想这将会成为''(不转义)和'(转义)到字符串的处理之间的区别。 – lotsoffreetime 2010-12-14 20:44:23